1 // RUN: %clang_cc1 -triple x86_64-pc-linux -std=c++17 -ast-dump=json %s | FileCheck %s 2 3 enum { 4 One, 5 Two 6 }; 7 8 // CHECK: "kind": "EnumDecl", 9 // CHECK-NEXT: "loc": { 10 // CHECK-NEXT: "col": 1, 11 // CHECK-NEXT: "file": "{{.*}}", 12 // CHECK-NEXT: "line": 3 13 // CHECK-NEXT: }, 14 // CHECK-NEXT: "range": { 15 // CHECK-NEXT: "begin": { 16 // CHECK-NEXT: "col": 1, 17 // CHECK-NEXT: "file": "{{.*}}", 18 // CHECK-NEXT: "line": 3 19 // CHECK-NEXT: }, 20 // CHECK-NEXT: "end": { 21 // CHECK-NEXT: "col": 1, 22 // CHECK-NEXT: "file": "{{.*}}", 23 // CHECK-NEXT: "line": 6 24 // CHECK-NEXT: } 25 // CHECK-NEXT: }, 26 // CHECK-NEXT: "inner": [ 27 // CHECK-NEXT: { 28 // CHECK-NEXT: "id": "0x{{.*}}", 29 // CHECK-NEXT: "kind": "EnumConstantDecl", 30 // CHECK-NEXT: "loc": { 31 // CHECK-NEXT: "col": 3, 32 // CHECK-NEXT: "file": "{{.*}}", 33 // CHECK-NEXT: "line": 4 34 // CHECK-NEXT: }, 35 // CHECK-NEXT: "range": { 36 // CHECK-NEXT: "begin": { 37 // CHECK-NEXT: "col": 3, 38 // CHECK-NEXT: "file": "{{.*}}", 39 // CHECK-NEXT: "line": 4 40 // CHECK-NEXT: }, 41 // CHECK-NEXT: "end": { 42 // CHECK-NEXT: "col": 3, 43 // CHECK-NEXT: "file": "{{.*}}", 44 // CHECK-NEXT: "line": 4 45 // CHECK-NEXT: } 46 // CHECK-NEXT: }, 47 // CHECK-NEXT: "name": "One", 48 // CHECK-NEXT: "type": { 49 // CHECK-NEXT: "qualType": "(anonymous enum at {{.*}}:3:1)" 50 // CHECK-NEXT: } 51 // CHECK-NEXT: }, 52 // CHECK-NEXT: { 53 // CHECK-NEXT: "id": "0x{{.*}}", 54 // CHECK-NEXT: "kind": "EnumConstantDecl", 55 // CHECK-NEXT: "loc": { 56 // CHECK-NEXT: "col": 3, 57 // CHECK-NEXT: "file": "{{.*}}", 58 // CHECK-NEXT: "line": 5 59 // CHECK-NEXT: }, 60 // CHECK-NEXT: "range": { 61 // CHECK-NEXT: "begin": { 62 // CHECK-NEXT: "col": 3, 63 // CHECK-NEXT: "file": "{{.*}}", 64 // CHECK-NEXT: "line": 5 65 // CHECK-NEXT: }, 66 // CHECK-NEXT: "end": { 67 // CHECK-NEXT: "col": 3, 68 // CHECK-NEXT: "file": "{{.*}}", 69 // CHECK-NEXT: "line": 5 70 // CHECK-NEXT: } 71 // CHECK-NEXT: }, 72 // CHECK-NEXT: "name": "Two", 73 // CHECK-NEXT: "type": { 74 // CHECK-NEXT: "qualType": "(anonymous enum at {{.*}}:3:1)" 75 // CHECK-NEXT: } 76 // CHECK-NEXT: } 77 // CHECK-NEXT: ] 78 // CHECK-NEXT: }, 79 80 enum E { 81 Three, 82 Four 83 }; 84 85 // CHECK: "kind": "EnumDecl", 86 // CHECK-NEXT: "loc": { 87 // CHECK-NEXT: "col": 6, 88 // CHECK-NEXT: "file": "{{.*}}", 89 // CHECK-NEXT: "line": 80 90 // CHECK-NEXT: }, 91 // CHECK-NEXT: "range": { 92 // CHECK-NEXT: "begin": { 93 // CHECK-NEXT: "col": 1, 94 // CHECK-NEXT: "file": "{{.*}}", 95 // CHECK-NEXT: "line": 80 96 // CHECK-NEXT: }, 97 // CHECK-NEXT: "end": { 98 // CHECK-NEXT: "col": 1, 99 // CHECK-NEXT: "file": "{{.*}}", 100 // CHECK-NEXT: "line": 83 101 // CHECK-NEXT: } 102 // CHECK-NEXT: }, 103 // CHECK-NEXT: "name": "E", 104 // CHECK-NEXT: "inner": [ 105 // CHECK-NEXT: { 106 // CHECK-NEXT: "id": "0x{{.*}}", 107 // CHECK-NEXT: "kind": "EnumConstantDecl", 108 // CHECK-NEXT: "loc": { 109 // CHECK-NEXT: "col": 3, 110 // CHECK-NEXT: "file": "{{.*}}", 111 // CHECK-NEXT: "line": 81 112 // CHECK-NEXT: }, 113 // CHECK-NEXT: "range": { 114 // CHECK-NEXT: "begin": { 115 // CHECK-NEXT: "col": 3, 116 // CHECK-NEXT: "file": "{{.*}}", 117 // CHECK-NEXT: "line": 81 118 // CHECK-NEXT: }, 119 // CHECK-NEXT: "end": { 120 // CHECK-NEXT: "col": 3, 121 // CHECK-NEXT: "file": "{{.*}}", 122 // CHECK-NEXT: "line": 81 123 // CHECK-NEXT: } 124 // CHECK-NEXT: }, 125 // CHECK-NEXT: "name": "Three", 126 // CHECK-NEXT: "type": { 127 // CHECK-NEXT: "qualType": "E" 128 // CHECK-NEXT: } 129 // CHECK-NEXT: }, 130 // CHECK-NEXT: { 131 // CHECK-NEXT: "id": "0x{{.*}}", 132 // CHECK-NEXT: "kind": "EnumConstantDecl", 133 // CHECK-NEXT: "loc": { 134 // CHECK-NEXT: "col": 3, 135 // CHECK-NEXT: "file": "{{.*}}", 136 // CHECK-NEXT: "line": 82 137 // CHECK-NEXT: }, 138 // CHECK-NEXT: "range": { 139 // CHECK-NEXT: "begin": { 140 // CHECK-NEXT: "col": 3, 141 // CHECK-NEXT: "file": "{{.*}}", 142 // CHECK-NEXT: "line": 82 143 // CHECK-NEXT: }, 144 // CHECK-NEXT: "end": { 145 // CHECK-NEXT: "col": 3, 146 // CHECK-NEXT: "file": "{{.*}}", 147 // CHECK-NEXT: "line": 82 148 // CHECK-NEXT: } 149 // CHECK-NEXT: }, 150 // CHECK-NEXT: "name": "Four", 151 // CHECK-NEXT: "type": { 152 // CHECK-NEXT: "qualType": "E" 153 // CHECK-NEXT: } 154 // CHECK-NEXT: } 155 // CHECK-NEXT: ] 156 // CHECK-NEXT: }, 157 158 enum F : short { 159 Five, 160 Six 161 }; 162 163 // CHECK: "kind": "EnumDecl", 164 // CHECK-NEXT: "loc": { 165 // CHECK-NEXT: "col": 6, 166 // CHECK-NEXT: "file": "{{.*}}", 167 // CHECK-NEXT: "line": 158 168 // CHECK-NEXT: }, 169 // CHECK-NEXT: "range": { 170 // CHECK-NEXT: "begin": { 171 // CHECK-NEXT: "col": 1, 172 // CHECK-NEXT: "file": "{{.*}}", 173 // CHECK-NEXT: "line": 158 174 // CHECK-NEXT: }, 175 // CHECK-NEXT: "end": { 176 // CHECK-NEXT: "col": 1, 177 // CHECK-NEXT: "file": "{{.*}}", 178 // CHECK-NEXT: "line": 161 179 // CHECK-NEXT: } 180 // CHECK-NEXT: }, 181 // CHECK-NEXT: "name": "F", 182 // CHECK-NEXT: "fixedUnderlyingType": { 183 // CHECK-NEXT: "qualType": "short" 184 // CHECK-NEXT: }, 185 // CHECK-NEXT: "inner": [ 186 // CHECK-NEXT: { 187 // CHECK-NEXT: "id": "0x{{.*}}", 188 // CHECK-NEXT: "kind": "EnumConstantDecl", 189 // CHECK-NEXT: "loc": { 190 // CHECK-NEXT: "col": 3, 191 // CHECK-NEXT: "file": "{{.*}}", 192 // CHECK-NEXT: "line": 159 193 // CHECK-NEXT: }, 194 // CHECK-NEXT: "range": { 195 // CHECK-NEXT: "begin": { 196 // CHECK-NEXT: "col": 3, 197 // CHECK-NEXT: "file": "{{.*}}", 198 // CHECK-NEXT: "line": 159 199 // CHECK-NEXT: }, 200 // CHECK-NEXT: "end": { 201 // CHECK-NEXT: "col": 3, 202 // CHECK-NEXT: "file": "{{.*}}", 203 // CHECK-NEXT: "line": 159 204 // CHECK-NEXT: } 205 // CHECK-NEXT: }, 206 // CHECK-NEXT: "name": "Five", 207 // CHECK-NEXT: "type": { 208 // CHECK-NEXT: "qualType": "F" 209 // CHECK-NEXT: } 210 // CHECK-NEXT: }, 211 // CHECK-NEXT: { 212 // CHECK-NEXT: "id": "0x{{.*}}", 213 // CHECK-NEXT: "kind": "EnumConstantDecl", 214 // CHECK-NEXT: "loc": { 215 // CHECK-NEXT: "col": 3, 216 // CHECK-NEXT: "file": "{{.*}}", 217 // CHECK-NEXT: "line": 160 218 // CHECK-NEXT: }, 219 // CHECK-NEXT: "range": { 220 // CHECK-NEXT: "begin": { 221 // CHECK-NEXT: "col": 3, 222 // CHECK-NEXT: "file": "{{.*}}", 223 // CHECK-NEXT: "line": 160 224 // CHECK-NEXT: }, 225 // CHECK-NEXT: "end": { 226 // CHECK-NEXT: "col": 3, 227 // CHECK-NEXT: "file": "{{.*}}", 228 // CHECK-NEXT: "line": 160 229 // CHECK-NEXT: } 230 // CHECK-NEXT: }, 231 // CHECK-NEXT: "name": "Six", 232 // CHECK-NEXT: "type": { 233 // CHECK-NEXT: "qualType": "F" 234 // CHECK-NEXT: } 235 // CHECK-NEXT: } 236 // CHECK-NEXT: ] 237 // CHECK-NEXT: }, 238 239 enum struct G { 240 Seven, 241 Eight 242 }; 243 244 // CHECK: "kind": "EnumDecl", 245 // CHECK-NEXT: "loc": { 246 // CHECK-NEXT: "col": 13, 247 // CHECK-NEXT: "file": "{{.*}}", 248 // CHECK-NEXT: "line": 239 249 // CHECK-NEXT: }, 250 // CHECK-NEXT: "range": { 251 // CHECK-NEXT: "begin": { 252 // CHECK-NEXT: "col": 1, 253 // CHECK-NEXT: "file": "{{.*}}", 254 // CHECK-NEXT: "line": 239 255 // CHECK-NEXT: }, 256 // CHECK-NEXT: "end": { 257 // CHECK-NEXT: "col": 1, 258 // CHECK-NEXT: "file": "{{.*}}", 259 // CHECK-NEXT: "line": 242 260 // CHECK-NEXT: } 261 // CHECK-NEXT: }, 262 // CHECK-NEXT: "name": "G", 263 // CHECK-NEXT: "fixedUnderlyingType": { 264 // CHECK-NEXT: "qualType": "int" 265 // CHECK-NEXT: }, 266 // CHECK-NEXT: "scopedEnumTag": "struct", 267 // CHECK-NEXT: "inner": [ 268 // CHECK-NEXT: { 269 // CHECK-NEXT: "id": "0x{{.*}}", 270 // CHECK-NEXT: "kind": "EnumConstantDecl", 271 // CHECK-NEXT: "loc": { 272 // CHECK-NEXT: "col": 3, 273 // CHECK-NEXT: "file": "{{.*}}", 274 // CHECK-NEXT: "line": 240 275 // CHECK-NEXT: }, 276 // CHECK-NEXT: "range": { 277 // CHECK-NEXT: "begin": { 278 // CHECK-NEXT: "col": 3, 279 // CHECK-NEXT: "file": "{{.*}}", 280 // CHECK-NEXT: "line": 240 281 // CHECK-NEXT: }, 282 // CHECK-NEXT: "end": { 283 // CHECK-NEXT: "col": 3, 284 // CHECK-NEXT: "file": "{{.*}}", 285 // CHECK-NEXT: "line": 240 286 // CHECK-NEXT: } 287 // CHECK-NEXT: }, 288 // CHECK-NEXT: "name": "Seven", 289 // CHECK-NEXT: "type": { 290 // CHECK-NEXT: "qualType": "G" 291 // CHECK-NEXT: } 292 // CHECK-NEXT: }, 293 // CHECK-NEXT: { 294 // CHECK-NEXT: "id": "0x{{.*}}", 295 // CHECK-NEXT: "kind": "EnumConstantDecl", 296 // CHECK-NEXT: "loc": { 297 // CHECK-NEXT: "col": 3, 298 // CHECK-NEXT: "file": "{{.*}}", 299 // CHECK-NEXT: "line": 241 300 // CHECK-NEXT: }, 301 // CHECK-NEXT: "range": { 302 // CHECK-NEXT: "begin": { 303 // CHECK-NEXT: "col": 3, 304 // CHECK-NEXT: "file": "{{.*}}", 305 // CHECK-NEXT: "line": 241 306 // CHECK-NEXT: }, 307 // CHECK-NEXT: "end": { 308 // CHECK-NEXT: "col": 3, 309 // CHECK-NEXT: "file": "{{.*}}", 310 // CHECK-NEXT: "line": 241 311 // CHECK-NEXT: } 312 // CHECK-NEXT: }, 313 // CHECK-NEXT: "name": "Eight", 314 // CHECK-NEXT: "type": { 315 // CHECK-NEXT: "qualType": "G" 316 // CHECK-NEXT: } 317 // CHECK-NEXT: } 318 // CHECK-NEXT: ] 319 // CHECK-NEXT: }, 320 321 enum class H { 322 Nine, 323 Ten 324 }; 325 326 // CHECK: "kind": "EnumDecl", 327 // CHECK-NEXT: "loc": { 328 // CHECK-NEXT: "col": 12, 329 // CHECK-NEXT: "file": "{{.*}}", 330 // CHECK-NEXT: "line": 321 331 // CHECK-NEXT: }, 332 // CHECK-NEXT: "range": { 333 // CHECK-NEXT: "begin": { 334 // CHECK-NEXT: "col": 1, 335 // CHECK-NEXT: "file": "{{.*}}", 336 // CHECK-NEXT: "line": 321 337 // CHECK-NEXT: }, 338 // CHECK-NEXT: "end": { 339 // CHECK-NEXT: "col": 1, 340 // CHECK-NEXT: "file": "{{.*}}", 341 // CHECK-NEXT: "line": 324 342 // CHECK-NEXT: } 343 // CHECK-NEXT: }, 344 // CHECK-NEXT: "name": "H", 345 // CHECK-NEXT: "fixedUnderlyingType": { 346 // CHECK-NEXT: "qualType": "int" 347 // CHECK-NEXT: }, 348 // CHECK-NEXT: "scopedEnumTag": "class", 349 // CHECK-NEXT: "inner": [ 350 // CHECK-NEXT: { 351 // CHECK-NEXT: "id": "0x{{.*}}", 352 // CHECK-NEXT: "kind": "EnumConstantDecl", 353 // CHECK-NEXT: "loc": { 354 // CHECK-NEXT: "col": 3, 355 // CHECK-NEXT: "file": "{{.*}}", 356 // CHECK-NEXT: "line": 322 357 // CHECK-NEXT: }, 358 // CHECK-NEXT: "range": { 359 // CHECK-NEXT: "begin": { 360 // CHECK-NEXT: "col": 3, 361 // CHECK-NEXT: "file": "{{.*}}", 362 // CHECK-NEXT: "line": 322 363 // CHECK-NEXT: }, 364 // CHECK-NEXT: "end": { 365 // CHECK-NEXT: "col": 3, 366 // CHECK-NEXT: "file": "{{.*}}", 367 // CHECK-NEXT: "line": 322 368 // CHECK-NEXT: } 369 // CHECK-NEXT: }, 370 // CHECK-NEXT: "name": "Nine", 371 // CHECK-NEXT: "type": { 372 // CHECK-NEXT: "qualType": "H" 373 // CHECK-NEXT: } 374 // CHECK-NEXT: }, 375 // CHECK-NEXT: { 376 // CHECK-NEXT: "id": "0x{{.*}}", 377 // CHECK-NEXT: "kind": "EnumConstantDecl", 378 // CHECK-NEXT: "loc": { 379 // CHECK-NEXT: "col": 3, 380 // CHECK-NEXT: "file": "{{.*}}", 381 // CHECK-NEXT: "line": 323 382 // CHECK-NEXT: }, 383 // CHECK-NEXT: "range": { 384 // CHECK-NEXT: "begin": { 385 // CHECK-NEXT: "col": 3, 386 // CHECK-NEXT: "file": "{{.*}}", 387 // CHECK-NEXT: "line": 323 388 // CHECK-NEXT: }, 389 // CHECK-NEXT: "end": { 390 // CHECK-NEXT: "col": 3, 391 // CHECK-NEXT: "file": "{{.*}}", 392 // CHECK-NEXT: "line": 323 393 // CHECK-NEXT: } 394 // CHECK-NEXT: }, 395 // CHECK-NEXT: "name": "Ten", 396 // CHECK-NEXT: "type": { 397 // CHECK-NEXT: "qualType": "H" 398 // CHECK-NEXT: } 399 // CHECK-NEXT: } 400 // CHECK-NEXT: ] 401 // CHECK-NEXT: }, 402 403 enum class I : int { 404 Eleven, 405 Twelve 406 }; 407 408 // CHECK: "kind": "EnumDecl", 409 // CHECK-NEXT: "loc": { 410 // CHECK-NEXT: "col": 12, 411 // CHECK-NEXT: "file": "{{.*}}", 412 // CHECK-NEXT: "line": 403 413 // CHECK-NEXT: }, 414 // CHECK-NEXT: "range": { 415 // CHECK-NEXT: "begin": { 416 // CHECK-NEXT: "col": 1, 417 // CHECK-NEXT: "file": "{{.*}}", 418 // CHECK-NEXT: "line": 403 419 // CHECK-NEXT: }, 420 // CHECK-NEXT: "end": { 421 // CHECK-NEXT: "col": 1, 422 // CHECK-NEXT: "file": "{{.*}}", 423 // CHECK-NEXT: "line": 406 424 // CHECK-NEXT: } 425 // CHECK-NEXT: }, 426 // CHECK-NEXT: "name": "I", 427 // CHECK-NEXT: "fixedUnderlyingType": { 428 // CHECK-NEXT: "qualType": "int" 429 // CHECK-NEXT: }, 430 // CHECK-NEXT: "scopedEnumTag": "class", 431 // CHECK-NEXT: "inner": [ 432 // CHECK-NEXT: { 433 // CHECK-NEXT: "id": "0x{{.*}}", 434 // CHECK-NEXT: "kind": "EnumConstantDecl", 435 // CHECK-NEXT: "loc": { 436 // CHECK-NEXT: "col": 3, 437 // CHECK-NEXT: "file": "{{.*}}", 438 // CHECK-NEXT: "line": 404 439 // CHECK-NEXT: }, 440 // CHECK-NEXT: "range": { 441 // CHECK-NEXT: "begin": { 442 // CHECK-NEXT: "col": 3, 443 // CHECK-NEXT: "file": "{{.*}}", 444 // CHECK-NEXT: "line": 404 445 // CHECK-NEXT: }, 446 // CHECK-NEXT: "end": { 447 // CHECK-NEXT: "col": 3, 448 // CHECK-NEXT: "file": "{{.*}}", 449 // CHECK-NEXT: "line": 404 450 // CHECK-NEXT: } 451 // CHECK-NEXT: }, 452 // CHECK-NEXT: "name": "Eleven", 453 // CHECK-NEXT: "type": { 454 // CHECK-NEXT: "qualType": "I" 455 // CHECK-NEXT: } 456 // CHECK-NEXT: }, 457 // CHECK-NEXT: { 458 // CHECK-NEXT: "id": "0x{{.*}}", 459 // CHECK-NEXT: "kind": "EnumConstantDecl", 460 // CHECK-NEXT: "loc": { 461 // CHECK-NEXT: "col": 3, 462 // CHECK-NEXT: "file": "{{.*}}", 463 // CHECK-NEXT: "line": 405 464 // CHECK-NEXT: }, 465 // CHECK-NEXT: "range": { 466 // CHECK-NEXT: "begin": { 467 // CHECK-NEXT: "col": 3, 468 // CHECK-NEXT: "file": "{{.*}}", 469 // CHECK-NEXT: "line": 405 470 // CHECK-NEXT: }, 471 // CHECK-NEXT: "end": { 472 // CHECK-NEXT: "col": 3, 473 // CHECK-NEXT: "file": "{{.*}}", 474 // CHECK-NEXT: "line": 405 475 // CHECK-NEXT: } 476 // CHECK-NEXT: }, 477 // CHECK-NEXT: "name": "Twelve", 478 // CHECK-NEXT: "type": { 479 // CHECK-NEXT: "qualType": "I" 480 // CHECK-NEXT: } 481 // CHECK-NEXT: } 482 // CHECK-NEXT: ] 483 // CHECK-NEXT: } 484 // CHECK-NEXT: ] 485