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