1529a0570SDaniel Grumberg // RUN: rm -rf %t 2*b1b24d75SDaniel Grumberg // RUN: %clang_cc1 -extract-api --pretty-sgf --emit-sgf-symbol-labels-for-testing --product-name=Macros -triple arm64-apple-macosx \ 3*b1b24d75SDaniel Grumberg // RUN: -isystem %S -x objective-c-header %s -o %t/output.symbols.json 4529a0570SDaniel Grumberg 5*b1b24d75SDaniel Grumberg // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix HELLO 6529a0570SDaniel Grumberg #define HELLO 1 7*b1b24d75SDaniel Grumberg // HELLO-LABEL: "!testLabel": "c:@macro@HELLO" 8*b1b24d75SDaniel Grumberg // HELLO: "accessLevel": "public", 9*b1b24d75SDaniel Grumberg // HELLO-NEXT: "declarationFragments": [ 10*b1b24d75SDaniel Grumberg // HELLO-NEXT: { 11*b1b24d75SDaniel Grumberg // HELLO-NEXT: "kind": "keyword", 12*b1b24d75SDaniel Grumberg // HELLO-NEXT: "spelling": "#define" 13*b1b24d75SDaniel Grumberg // HELLO-NEXT: }, 14*b1b24d75SDaniel Grumberg // HELLO-NEXT: { 15*b1b24d75SDaniel Grumberg // HELLO-NEXT: "kind": "text", 16*b1b24d75SDaniel Grumberg // HELLO-NEXT: "spelling": " " 17*b1b24d75SDaniel Grumberg // HELLO-NEXT: }, 18*b1b24d75SDaniel Grumberg // HELLO-NEXT: { 19*b1b24d75SDaniel Grumberg // HELLO-NEXT: "kind": "identifier", 20*b1b24d75SDaniel Grumberg // HELLO-NEXT: "spelling": "HELLO" 21*b1b24d75SDaniel Grumberg // HELLO-NEXT: } 22*b1b24d75SDaniel Grumberg // HELLO-NEXT: ], 23*b1b24d75SDaniel Grumberg // HELLO: "kind": { 24*b1b24d75SDaniel Grumberg // HELLO-NEXT: "displayName": "Macro", 25*b1b24d75SDaniel Grumberg // HELLO-NEXT: "identifier": "objective-c.macro" 26*b1b24d75SDaniel Grumberg // HELLO-NEXT: }, 27*b1b24d75SDaniel Grumberg // HELLO-NEXT: "location": { 28*b1b24d75SDaniel Grumberg // HELLO-NEXT: "position": { 29*b1b24d75SDaniel Grumberg // HELLO-NEXT: "character": 8, 30*b1b24d75SDaniel Grumberg // HELLO-NEXT: "line": [[# @LINE - 25]] 31*b1b24d75SDaniel Grumberg // HELLO-NEXT: }, 32*b1b24d75SDaniel Grumberg // HELLO-NEXT: "uri": "file://{{.*}}/macros.c" 33*b1b24d75SDaniel Grumberg // HELLO-NEXT: }, 34*b1b24d75SDaniel Grumberg // HELLO-NEXT: "names": { 35*b1b24d75SDaniel Grumberg // HELLO-NEXT: "navigator": [ 36*b1b24d75SDaniel Grumberg // HELLO-NEXT: { 37*b1b24d75SDaniel Grumberg // HELLO-NEXT: "kind": "identifier", 38*b1b24d75SDaniel Grumberg // HELLO-NEXT: "spelling": "HELLO" 39*b1b24d75SDaniel Grumberg // HELLO-NEXT: } 40*b1b24d75SDaniel Grumberg // HELLO-NEXT: ], 41*b1b24d75SDaniel Grumberg // HELLO-NEXT: "subHeading": [ 42*b1b24d75SDaniel Grumberg // HELLO-NEXT: { 43*b1b24d75SDaniel Grumberg // HELLO-NEXT: "kind": "identifier", 44*b1b24d75SDaniel Grumberg // HELLO-NEXT: "spelling": "HELLO" 45*b1b24d75SDaniel Grumberg // HELLO-NEXT: } 46*b1b24d75SDaniel Grumberg // HELLO-NEXT: ], 47*b1b24d75SDaniel Grumberg // HELLO-NEXT: "title": "HELLO" 48*b1b24d75SDaniel Grumberg // HELLO-NEXT: }, 49*b1b24d75SDaniel Grumberg // HELLO-NEXT: "pathComponents": [ 50*b1b24d75SDaniel Grumberg // HELLO-NEXT: "HELLO" 51*b1b24d75SDaniel Grumberg // HELLO-NEXT: ] 52529a0570SDaniel Grumberg 53*b1b24d75SDaniel Grumberg // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix WORLD 54*b1b24d75SDaniel Grumberg #define WORLD 2 55*b1b24d75SDaniel Grumberg // WORLD-LABEL: "!testLabel": "c:@macro@WORLD" 56*b1b24d75SDaniel Grumberg // WORLD: "accessLevel": "public", 57*b1b24d75SDaniel Grumberg // WORLD-NEXT: "declarationFragments": [ 58*b1b24d75SDaniel Grumberg // WORLD-NEXT: { 59*b1b24d75SDaniel Grumberg // WORLD-NEXT: "kind": "keyword", 60*b1b24d75SDaniel Grumberg // WORLD-NEXT: "spelling": "#define" 61*b1b24d75SDaniel Grumberg // WORLD-NEXT: }, 62*b1b24d75SDaniel Grumberg // WORLD-NEXT: { 63*b1b24d75SDaniel Grumberg // WORLD-NEXT: "kind": "text", 64*b1b24d75SDaniel Grumberg // WORLD-NEXT: "spelling": " " 65*b1b24d75SDaniel Grumberg // WORLD-NEXT: }, 66*b1b24d75SDaniel Grumberg // WORLD-NEXT: { 67*b1b24d75SDaniel Grumberg // WORLD-NEXT: "kind": "identifier", 68*b1b24d75SDaniel Grumberg // WORLD-NEXT: "spelling": "WORLD" 69*b1b24d75SDaniel Grumberg // WORLD-NEXT: } 70*b1b24d75SDaniel Grumberg // WORLD-NEXT: ], 71*b1b24d75SDaniel Grumberg // WORLD: "kind": { 72*b1b24d75SDaniel Grumberg // WORLD-NEXT: "displayName": "Macro", 73*b1b24d75SDaniel Grumberg // WORLD-NEXT: "identifier": "objective-c.macro" 74*b1b24d75SDaniel Grumberg // WORLD-NEXT: }, 75*b1b24d75SDaniel Grumberg // WORLD-NEXT: "location": { 76*b1b24d75SDaniel Grumberg // WORLD-NEXT: "position": { 77*b1b24d75SDaniel Grumberg // WORLD-NEXT: "character": 8, 78*b1b24d75SDaniel Grumberg // WORLD-NEXT: "line": [[# @LINE - 25]] 79*b1b24d75SDaniel Grumberg // WORLD-NEXT: }, 80*b1b24d75SDaniel Grumberg // WORLD-NEXT: "uri": "file://{{.*}}/macros.c" 81*b1b24d75SDaniel Grumberg // WORLD-NEXT: }, 82*b1b24d75SDaniel Grumberg // WORLD-NEXT: "names": { 83*b1b24d75SDaniel Grumberg // WORLD-NEXT: "navigator": [ 84*b1b24d75SDaniel Grumberg // WORLD-NEXT: { 85*b1b24d75SDaniel Grumberg // WORLD-NEXT: "kind": "identifier", 86*b1b24d75SDaniel Grumberg // WORLD-NEXT: "spelling": "WORLD" 87*b1b24d75SDaniel Grumberg // WORLD-NEXT: } 88*b1b24d75SDaniel Grumberg // WORLD-NEXT: ], 89*b1b24d75SDaniel Grumberg // WORLD-NEXT: "subHeading": [ 90*b1b24d75SDaniel Grumberg // WORLD-NEXT: { 91*b1b24d75SDaniel Grumberg // WORLD-NEXT: "kind": "identifier", 92*b1b24d75SDaniel Grumberg // WORLD-NEXT: "spelling": "WORLD" 93*b1b24d75SDaniel Grumberg // WORLD-NEXT: } 94*b1b24d75SDaniel Grumberg // WORLD-NEXT: ], 95*b1b24d75SDaniel Grumberg // WORLD-NEXT: "title": "WORLD" 96*b1b24d75SDaniel Grumberg // WORLD-NEXT: }, 97*b1b24d75SDaniel Grumberg // WORLD-NEXT: "pathComponents": [ 98*b1b24d75SDaniel Grumberg // WORLD-NEXT: "WORLD" 99*b1b24d75SDaniel Grumberg // WORLD-NEXT: ] 100*b1b24d75SDaniel Grumberg 101*b1b24d75SDaniel Grumberg // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix MACRO_FUN 102*b1b24d75SDaniel Grumberg #define MACRO_FUN(x) x x 103*b1b24d75SDaniel Grumberg // MACRO_FUN-LABEL: "!testLabel": "c:@macro@MACRO_FUN" 104*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "accessLevel": "public", 105*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "declarationFragments": [ 106*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: { 107*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "kind": "keyword", 108*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "spelling": "#define" 109*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: }, 110*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: { 111*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "kind": "text", 112*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "spelling": " " 113*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: }, 114*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: { 115*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "kind": "identifier", 116*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "spelling": "MACRO_FUN" 117*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: }, 118*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: { 119*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "kind": "text", 120*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "spelling": "(" 121*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: }, 122*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: { 123*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "kind": "internalParam", 124*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "spelling": "x" 125*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: }, 126*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: { 127*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "kind": "text", 128*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "spelling": ")" 129*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: } 130*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: ], 131*b1b24d75SDaniel Grumberg // MACRO_FUN: "kind": { 132*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "displayName": "Macro", 133*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "identifier": "objective-c.macro" 134*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: }, 135*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "location": { 136*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "position": { 137*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "character": 8, 138*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "line": [[# @LINE - 37]] 139*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: }, 140*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "uri": "file://{{.*}}/macros.c" 141*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: }, 142*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "names": { 143*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "navigator": [ 144*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: { 145*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "kind": "identifier", 146*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "spelling": "MACRO_FUN" 147*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: } 148*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: ], 149*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "subHeading": [ 150*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: { 151*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "kind": "identifier", 152*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "spelling": "MACRO_FUN" 153*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: } 154*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: ], 155*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "title": "MACRO_FUN" 156*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: }, 157*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "pathComponents": [ 158*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: "MACRO_FUN" 159*b1b24d75SDaniel Grumberg // MACRO_FUN-NEXT: ] 160*b1b24d75SDaniel Grumberg 161*b1b24d75SDaniel Grumberg // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix FUN 162*b1b24d75SDaniel Grumberg #define FUN(x, y, z) x + y + z 163*b1b24d75SDaniel Grumberg // FUN-LABEL: "!testLabel": "c:@macro@FUN" 164*b1b24d75SDaniel Grumberg // FUN-NEXT: "accessLevel": "public", 165*b1b24d75SDaniel Grumberg // FUN-NEXT: "declarationFragments": [ 166*b1b24d75SDaniel Grumberg // FUN-NEXT: { 167*b1b24d75SDaniel Grumberg // FUN-NEXT: "kind": "keyword", 168*b1b24d75SDaniel Grumberg // FUN-NEXT: "spelling": "#define" 169*b1b24d75SDaniel Grumberg // FUN-NEXT: }, 170*b1b24d75SDaniel Grumberg // FUN-NEXT: { 171*b1b24d75SDaniel Grumberg // FUN-NEXT: "kind": "text", 172*b1b24d75SDaniel Grumberg // FUN-NEXT: "spelling": " " 173*b1b24d75SDaniel Grumberg // FUN-NEXT: }, 174*b1b24d75SDaniel Grumberg // FUN-NEXT: { 175*b1b24d75SDaniel Grumberg // FUN-NEXT: "kind": "identifier", 176*b1b24d75SDaniel Grumberg // FUN-NEXT: "spelling": "FUN" 177*b1b24d75SDaniel Grumberg // FUN-NEXT: }, 178*b1b24d75SDaniel Grumberg // FUN-NEXT: { 179*b1b24d75SDaniel Grumberg // FUN-NEXT: "kind": "text", 180*b1b24d75SDaniel Grumberg // FUN-NEXT: "spelling": "(" 181*b1b24d75SDaniel Grumberg // FUN-NEXT: }, 182*b1b24d75SDaniel Grumberg // FUN-NEXT: { 183*b1b24d75SDaniel Grumberg // FUN-NEXT: "kind": "internalParam", 184*b1b24d75SDaniel Grumberg // FUN-NEXT: "spelling": "x" 185*b1b24d75SDaniel Grumberg // FUN-NEXT: }, 186*b1b24d75SDaniel Grumberg // FUN-NEXT: { 187*b1b24d75SDaniel Grumberg // FUN-NEXT: "kind": "text", 188*b1b24d75SDaniel Grumberg // FUN-NEXT: "spelling": ", " 189*b1b24d75SDaniel Grumberg // FUN-NEXT: }, 190*b1b24d75SDaniel Grumberg // FUN-NEXT: { 191*b1b24d75SDaniel Grumberg // FUN-NEXT: "kind": "internalParam", 192*b1b24d75SDaniel Grumberg // FUN-NEXT: "spelling": "y" 193*b1b24d75SDaniel Grumberg // FUN-NEXT: }, 194*b1b24d75SDaniel Grumberg // FUN-NEXT: { 195*b1b24d75SDaniel Grumberg // FUN-NEXT: "kind": "text", 196*b1b24d75SDaniel Grumberg // FUN-NEXT: "spelling": ", " 197*b1b24d75SDaniel Grumberg // FUN-NEXT: }, 198*b1b24d75SDaniel Grumberg // FUN-NEXT: { 199*b1b24d75SDaniel Grumberg // FUN-NEXT: "kind": "internalParam", 200*b1b24d75SDaniel Grumberg // FUN-NEXT: "spelling": "z" 201*b1b24d75SDaniel Grumberg // FUN-NEXT: }, 202*b1b24d75SDaniel Grumberg // FUN-NEXT: { 203*b1b24d75SDaniel Grumberg // FUN-NEXT: "kind": "text", 204*b1b24d75SDaniel Grumberg // FUN-NEXT: "spelling": ")" 205*b1b24d75SDaniel Grumberg // FUN-NEXT: } 206*b1b24d75SDaniel Grumberg // FUN-NEXT: ], 207*b1b24d75SDaniel Grumberg // FUN: "kind": { 208*b1b24d75SDaniel Grumberg // FUN-NEXT: "displayName": "Macro", 209*b1b24d75SDaniel Grumberg // FUN-NEXT: "identifier": "objective-c.macro" 210*b1b24d75SDaniel Grumberg // FUN-NEXT: }, 211*b1b24d75SDaniel Grumberg // FUN-NEXT: "location": { 212*b1b24d75SDaniel Grumberg // FUN-NEXT: "position": { 213*b1b24d75SDaniel Grumberg // FUN-NEXT: "character": 8, 214*b1b24d75SDaniel Grumberg // FUN-NEXT: "line": [[# @LINE - 53]] 215*b1b24d75SDaniel Grumberg // FUN-NEXT: }, 216*b1b24d75SDaniel Grumberg // FUN-NEXT: "uri": "file://{{.*}}/macros.c" 217*b1b24d75SDaniel Grumberg // FUN-NEXT: }, 218*b1b24d75SDaniel Grumberg // FUN-NEXT: "names": { 219*b1b24d75SDaniel Grumberg // FUN-NEXT: "navigator": [ 220*b1b24d75SDaniel Grumberg // FUN-NEXT: { 221*b1b24d75SDaniel Grumberg // FUN-NEXT: "kind": "identifier", 222*b1b24d75SDaniel Grumberg // FUN-NEXT: "spelling": "FUN" 223*b1b24d75SDaniel Grumberg // FUN-NEXT: } 224*b1b24d75SDaniel Grumberg // FUN-NEXT: ], 225*b1b24d75SDaniel Grumberg // FUN-NEXT: "subHeading": [ 226*b1b24d75SDaniel Grumberg // FUN-NEXT: { 227*b1b24d75SDaniel Grumberg // FUN-NEXT: "kind": "identifier", 228*b1b24d75SDaniel Grumberg // FUN-NEXT: "spelling": "FUN" 229*b1b24d75SDaniel Grumberg // FUN-NEXT: } 230*b1b24d75SDaniel Grumberg // FUN-NEXT: ], 231*b1b24d75SDaniel Grumberg // FUN-NEXT: "title": "FUN" 232*b1b24d75SDaniel Grumberg // FUN-NEXT: }, 233*b1b24d75SDaniel Grumberg // FUN-NEXT: "pathComponents": [ 234*b1b24d75SDaniel Grumberg // FUN-NEXT: "FUN" 235*b1b24d75SDaniel Grumberg // FUN-NEXT: ] 236*b1b24d75SDaniel Grumberg 237*b1b24d75SDaniel Grumberg // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix FUNC99 238*b1b24d75SDaniel Grumberg #define FUNC99(x, ...) 239*b1b24d75SDaniel Grumberg // FUNC99-LABEL: "!testLabel": "c:@macro@FUNC99" 240*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "accessLevel": "public", 241*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "declarationFragments": [ 242*b1b24d75SDaniel Grumberg // FUNC99-NEXT: { 243*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "kind": "keyword", 244*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "spelling": "#define" 245*b1b24d75SDaniel Grumberg // FUNC99-NEXT: }, 246*b1b24d75SDaniel Grumberg // FUNC99-NEXT: { 247*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "kind": "text", 248*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "spelling": " " 249*b1b24d75SDaniel Grumberg // FUNC99-NEXT: }, 250*b1b24d75SDaniel Grumberg // FUNC99-NEXT: { 251*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "kind": "identifier", 252*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "spelling": "FUNC99" 253*b1b24d75SDaniel Grumberg // FUNC99-NEXT: }, 254*b1b24d75SDaniel Grumberg // FUNC99-NEXT: { 255*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "kind": "text", 256*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "spelling": "(" 257*b1b24d75SDaniel Grumberg // FUNC99-NEXT: }, 258*b1b24d75SDaniel Grumberg // FUNC99-NEXT: { 259*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "kind": "internalParam", 260*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "spelling": "x" 261*b1b24d75SDaniel Grumberg // FUNC99-NEXT: }, 262*b1b24d75SDaniel Grumberg // FUNC99-NEXT: { 263*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "kind": "text", 264*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "spelling": ", ...)" 265*b1b24d75SDaniel Grumberg // FUNC99-NEXT: } 266*b1b24d75SDaniel Grumberg // FUNC99-NEXT: ], 267*b1b24d75SDaniel Grumberg // FUNC99: "kind": { 268*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "displayName": "Macro", 269*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "identifier": "objective-c.macro" 270*b1b24d75SDaniel Grumberg // FUNC99-NEXT: }, 271*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "location": { 272*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "position": { 273*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "character": 8, 274*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "line": [[# @LINE - 37]] 275*b1b24d75SDaniel Grumberg // FUNC99-NEXT: }, 276*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "uri": "file://{{.*}}/macros.c" 277*b1b24d75SDaniel Grumberg // FUNC99-NEXT: }, 278*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "names": { 279*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "navigator": [ 280*b1b24d75SDaniel Grumberg // FUNC99-NEXT: { 281*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "kind": "identifier", 282*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "spelling": "FUNC99" 283*b1b24d75SDaniel Grumberg // FUNC99-NEXT: } 284*b1b24d75SDaniel Grumberg // FUNC99-NEXT: ], 285*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "subHeading": [ 286*b1b24d75SDaniel Grumberg // FUNC99-NEXT: { 287*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "kind": "identifier", 288*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "spelling": "FUNC99" 289*b1b24d75SDaniel Grumberg // FUNC99-NEXT: } 290*b1b24d75SDaniel Grumberg // FUNC99-NEXT: ], 291*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "title": "FUNC99" 292*b1b24d75SDaniel Grumberg // FUNC99-NEXT: }, 293*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "pathComponents": [ 294*b1b24d75SDaniel Grumberg // FUNC99-NEXT: "FUNC99" 295*b1b24d75SDaniel Grumberg // FUNC99-NEXT: ] 296*b1b24d75SDaniel Grumberg 297*b1b24d75SDaniel Grumberg // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix FUNGNU 298*b1b24d75SDaniel Grumberg #define FUNGNU(x...) 299*b1b24d75SDaniel Grumberg // FUNGNU-LABEL: "!testLabel": "c:@macro@FUNGNU" 300*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "accessLevel": "public", 301*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "declarationFragments": [ 302*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: { 303*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "kind": "keyword", 304*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "spelling": "#define" 305*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: }, 306*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: { 307*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "kind": "text", 308*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "spelling": " " 309*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: }, 310*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: { 311*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "kind": "identifier", 312*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "spelling": "FUNGNU" 313*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: }, 314*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: { 315*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "kind": "text", 316*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "spelling": "(" 317*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: }, 318*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: { 319*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "kind": "internalParam", 320*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "spelling": "x" 321*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: }, 322*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: { 323*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "kind": "text", 324*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "spelling": "...)" 325*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: } 326*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: ], 327*b1b24d75SDaniel Grumberg // FUNGNU: "kind": { 328*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "displayName": "Macro", 329*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "identifier": "objective-c.macro" 330*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: }, 331*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "location": { 332*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "position": { 333*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "character": 8, 334*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "line": [[# @LINE - 37]] 335*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: }, 336*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "uri": "file://{{.*}}/macros.c" 337*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: }, 338*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "names": { 339*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "navigator": [ 340*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: { 341*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "kind": "identifier", 342*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "spelling": "FUNGNU" 343*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: } 344*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: ], 345*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "subHeading": [ 346*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: { 347*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "kind": "identifier", 348*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "spelling": "FUNGNU" 349*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: } 350*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: ], 351*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "title": "FUNGNU" 352*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: }, 353*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "pathComponents": [ 354*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: "FUNGNU" 355*b1b24d75SDaniel Grumberg // FUNGNU-NEXT: ] 356*b1b24d75SDaniel Grumberg 357*b1b24d75SDaniel Grumberg // expected-no-diagnostics 358*b1b24d75SDaniel Grumberg 359