175f55eb3SErick Velez // RUN: rm -rf %t 2*e05c1b46SDaniel Grumberg // RUN: %clang_cc1 -extract-api --pretty-sgf --emit-sgf-symbol-labels-for-testing \ 3*e05c1b46SDaniel Grumberg // RUN: -triple arm64-apple-macosx -x c++-header %s -o %t/output.symbols.json -verify 475f55eb3SErick Velez 575f55eb3SErick Velez class Foo { 6*e05c1b46SDaniel Grumberg // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix GETCOUNT 775f55eb3SErick Velez int getCount(); 8*e05c1b46SDaniel Grumberg // GETCOUNT: "!testRelLabel": "memberOf $ c:@S@Foo@F@getCount# $ c:@S@Foo" 9*e05c1b46SDaniel Grumberg // GETCOUNT-LABEL: "!testLabel": "c:@S@Foo@F@getCount#" 10*e05c1b46SDaniel Grumberg // GETCOUNT: "accessLevel": "private", 11*e05c1b46SDaniel Grumberg // GETCOUNT: "declarationFragments": [ 12*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: { 13*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: "kind": "typeIdentifier", 14*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: "preciseIdentifier": "c:I", 15*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: "spelling": "int" 16*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: }, 17*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: { 18*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: "kind": "text", 19*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: "spelling": " " 20*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: }, 21*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: { 22*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: "kind": "identifier", 23*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: "spelling": "getCount" 24*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: }, 25*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: { 26*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: "kind": "text", 27*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: "spelling": "();" 28*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: } 29*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: ], 30*e05c1b46SDaniel Grumberg // GETCOUNT: "functionSignature": { 31*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: "returns": [ 32*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: { 33*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: "kind": "typeIdentifier", 34*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: "preciseIdentifier": "c:I", 35*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: "spelling": "int" 36*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: } 37*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: ] 38*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: }, 39*e05c1b46SDaniel Grumberg // GETCOUNT: "displayName": "Instance Method", 40*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: "identifier": "c++.method" 41*e05c1b46SDaniel Grumberg // GETCOUNT: "title": "getCount" 42*e05c1b46SDaniel Grumberg // GETCOUNT: "pathComponents": [ 43*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: "Foo", 44*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: "getCount" 45*e05c1b46SDaniel Grumberg // GETCOUNT-NEXT: ] 4675f55eb3SErick Velez 47*e05c1b46SDaniel Grumberg // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix SETL 4875f55eb3SErick Velez void setLength(int length) noexcept; 49*e05c1b46SDaniel Grumberg // SETL: "!testRelLabel": "memberOf $ c:@S@Foo@F@setLength#I# $ c:@S@Foo" 50*e05c1b46SDaniel Grumberg // SETL-LABEL: "!testLabel": "c:@S@Foo@F@setLength#I#" 51*e05c1b46SDaniel Grumberg // SETL: "declarationFragments": [ 52*e05c1b46SDaniel Grumberg // SETL-NEXT: { 53*e05c1b46SDaniel Grumberg // SETL-NEXT: "kind": "typeIdentifier", 54*e05c1b46SDaniel Grumberg // SETL-NEXT: "preciseIdentifier": "c:v", 55*e05c1b46SDaniel Grumberg // SETL-NEXT: "spelling": "void" 56*e05c1b46SDaniel Grumberg // SETL-NEXT: }, 57*e05c1b46SDaniel Grumberg // SETL-NEXT: { 58*e05c1b46SDaniel Grumberg // SETL-NEXT: "kind": "text", 59*e05c1b46SDaniel Grumberg // SETL-NEXT: "spelling": " " 60*e05c1b46SDaniel Grumberg // SETL-NEXT: }, 61*e05c1b46SDaniel Grumberg // SETL-NEXT: { 62*e05c1b46SDaniel Grumberg // SETL-NEXT: "kind": "identifier", 63*e05c1b46SDaniel Grumberg // SETL-NEXT: "spelling": "setLength" 64*e05c1b46SDaniel Grumberg // SETL-NEXT: }, 65*e05c1b46SDaniel Grumberg // SETL-NEXT: { 66*e05c1b46SDaniel Grumberg // SETL-NEXT: "kind": "text", 67*e05c1b46SDaniel Grumberg // SETL-NEXT: "spelling": "(" 68*e05c1b46SDaniel Grumberg // SETL-NEXT: }, 69*e05c1b46SDaniel Grumberg // SETL-NEXT: { 70*e05c1b46SDaniel Grumberg // SETL-NEXT: "kind": "typeIdentifier", 71*e05c1b46SDaniel Grumberg // SETL-NEXT: "preciseIdentifier": "c:I", 72*e05c1b46SDaniel Grumberg // SETL-NEXT: "spelling": "int" 73*e05c1b46SDaniel Grumberg // SETL-NEXT: }, 74*e05c1b46SDaniel Grumberg // SETL-NEXT: { 75*e05c1b46SDaniel Grumberg // SETL-NEXT: "kind": "text", 76*e05c1b46SDaniel Grumberg // SETL-NEXT: "spelling": " " 77*e05c1b46SDaniel Grumberg // SETL-NEXT: }, 78*e05c1b46SDaniel Grumberg // SETL-NEXT: { 79*e05c1b46SDaniel Grumberg // SETL-NEXT: "kind": "internalParam", 80*e05c1b46SDaniel Grumberg // SETL-NEXT: "spelling": "length" 81*e05c1b46SDaniel Grumberg // SETL-NEXT: }, 82*e05c1b46SDaniel Grumberg // SETL-NEXT: { 83*e05c1b46SDaniel Grumberg // SETL-NEXT: "kind": "text", 84*e05c1b46SDaniel Grumberg // SETL-NEXT: "spelling": ") " 85*e05c1b46SDaniel Grumberg // SETL-NEXT: }, 86*e05c1b46SDaniel Grumberg // SETL-NEXT: { 87*e05c1b46SDaniel Grumberg // SETL-NEXT: "kind": "keyword", 88*e05c1b46SDaniel Grumberg // SETL-NEXT: "spelling": "noexcept" 89*e05c1b46SDaniel Grumberg // SETL-NEXT: }, 90*e05c1b46SDaniel Grumberg // SETL-NEXT: { 91*e05c1b46SDaniel Grumberg // SETL-NEXT: "kind": "text", 92*e05c1b46SDaniel Grumberg // SETL-NEXT: "spelling": ";" 93*e05c1b46SDaniel Grumberg // SETL-NEXT: } 94*e05c1b46SDaniel Grumberg // SETL-NEXT: ], 95*e05c1b46SDaniel Grumberg // SETL: "functionSignature": { 96*e05c1b46SDaniel Grumberg // SETL-NEXT: "parameters": [ 97*e05c1b46SDaniel Grumberg // SETL-NEXT: { 98*e05c1b46SDaniel Grumberg // SETL-NEXT: "declarationFragments": [ 99*e05c1b46SDaniel Grumberg // SETL-NEXT: { 100*e05c1b46SDaniel Grumberg // SETL-NEXT: "kind": "typeIdentifier", 101*e05c1b46SDaniel Grumberg // SETL-NEXT: "preciseIdentifier": "c:I", 102*e05c1b46SDaniel Grumberg // SETL-NEXT: "spelling": "int" 103*e05c1b46SDaniel Grumberg // SETL-NEXT: }, 104*e05c1b46SDaniel Grumberg // SETL-NEXT: { 105*e05c1b46SDaniel Grumberg // SETL-NEXT: "kind": "text", 106*e05c1b46SDaniel Grumberg // SETL-NEXT: "spelling": " " 107*e05c1b46SDaniel Grumberg // SETL-NEXT: }, 108*e05c1b46SDaniel Grumberg // SETL-NEXT: { 109*e05c1b46SDaniel Grumberg // SETL-NEXT: "kind": "internalParam", 110*e05c1b46SDaniel Grumberg // SETL-NEXT: "spelling": "length" 111*e05c1b46SDaniel Grumberg // SETL-NEXT: } 112*e05c1b46SDaniel Grumberg // SETL-NEXT: ], 113*e05c1b46SDaniel Grumberg // SETL-NEXT: "name": "length" 114*e05c1b46SDaniel Grumberg // SETL-NEXT: } 115*e05c1b46SDaniel Grumberg // SETL-NEXT: ], 116*e05c1b46SDaniel Grumberg // SETL-NEXT: "returns": [ 117*e05c1b46SDaniel Grumberg // SETL-NEXT: { 118*e05c1b46SDaniel Grumberg // SETL-NEXT: "kind": "typeIdentifier", 119*e05c1b46SDaniel Grumberg // SETL-NEXT: "preciseIdentifier": "c:v", 120*e05c1b46SDaniel Grumberg // SETL-NEXT: "spelling": "void" 121*e05c1b46SDaniel Grumberg // SETL-NEXT: } 122*e05c1b46SDaniel Grumberg // SETL-NEXT: ] 123*e05c1b46SDaniel Grumberg // SETL-NEXT: }, 12475f55eb3SErick Velez 12575f55eb3SErick Velez public: 126*e05c1b46SDaniel Grumberg // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix GETFOO 12775f55eb3SErick Velez static double getFoo(); 128*e05c1b46SDaniel Grumberg // GETFOO: "!testRelLabel": "memberOf $ c:@S@Foo@F@getFoo#S $ c:@S@Foo" 129*e05c1b46SDaniel Grumberg 130*e05c1b46SDaniel Grumberg // GETFOO-LABEL: "!testLabel": "c:@S@Foo@F@getFoo#S" 131*e05c1b46SDaniel Grumberg // GETFOO: "accessLevel": "public", 132*e05c1b46SDaniel Grumberg // GETFOO: "declarationFragments": [ 133*e05c1b46SDaniel Grumberg // GETFOO-NEXT: { 134*e05c1b46SDaniel Grumberg // GETFOO-NEXT: "kind": "keyword", 135*e05c1b46SDaniel Grumberg // GETFOO-NEXT: "spelling": "static" 136*e05c1b46SDaniel Grumberg // GETFOO-NEXT: }, 137*e05c1b46SDaniel Grumberg // GETFOO-NEXT: { 138*e05c1b46SDaniel Grumberg // GETFOO-NEXT: "kind": "text", 139*e05c1b46SDaniel Grumberg // GETFOO-NEXT: "spelling": " " 140*e05c1b46SDaniel Grumberg // GETFOO-NEXT: }, 141*e05c1b46SDaniel Grumberg // GETFOO-NEXT: { 142*e05c1b46SDaniel Grumberg // GETFOO-NEXT: "kind": "typeIdentifier", 143*e05c1b46SDaniel Grumberg // GETFOO-NEXT: "preciseIdentifier": "c:d", 144*e05c1b46SDaniel Grumberg // GETFOO-NEXT: "spelling": "double" 145*e05c1b46SDaniel Grumberg // GETFOO-NEXT: }, 146*e05c1b46SDaniel Grumberg // GETFOO-NEXT: { 147*e05c1b46SDaniel Grumberg // GETFOO-NEXT: "kind": "text", 148*e05c1b46SDaniel Grumberg // GETFOO-NEXT: "spelling": " " 149*e05c1b46SDaniel Grumberg // GETFOO-NEXT: }, 150*e05c1b46SDaniel Grumberg // GETFOO-NEXT: { 151*e05c1b46SDaniel Grumberg // GETFOO-NEXT: "kind": "identifier", 152*e05c1b46SDaniel Grumberg // GETFOO-NEXT: "spelling": "getFoo" 153*e05c1b46SDaniel Grumberg // GETFOO-NEXT: }, 154*e05c1b46SDaniel Grumberg // GETFOO-NEXT: { 155*e05c1b46SDaniel Grumberg // GETFOO-NEXT: "kind": "text", 156*e05c1b46SDaniel Grumberg // GETFOO-NEXT: "spelling": "();" 157*e05c1b46SDaniel Grumberg // GETFOO-NEXT: } 158*e05c1b46SDaniel Grumberg // GETFOO-NEXT: ], 159*e05c1b46SDaniel Grumberg // GETFOO: "functionSignature": { 160*e05c1b46SDaniel Grumberg // GETFOO-NEXT: "returns": [ 161*e05c1b46SDaniel Grumberg // GETFOO-NEXT: { 162*e05c1b46SDaniel Grumberg // GETFOO-NEXT: "kind": "typeIdentifier", 163*e05c1b46SDaniel Grumberg // GETFOO-NEXT: "preciseIdentifier": "c:d", 164*e05c1b46SDaniel Grumberg // GETFOO-NEXT: "spelling": "double" 165*e05c1b46SDaniel Grumberg // GETFOO-NEXT: } 166*e05c1b46SDaniel Grumberg // GETFOO-NEXT: ] 167*e05c1b46SDaniel Grumberg // GETFOO-NEXT: }, 168*e05c1b46SDaniel Grumberg // GETFOO: "kind": { 169*e05c1b46SDaniel Grumberg // GETFOO-NEXT: "displayName": "Static Method", 170*e05c1b46SDaniel Grumberg // GETFOO-NEXT: "identifier": "c++.type.method" 171*e05c1b46SDaniel Grumberg // GETFOO-NEXT: }, 17275f55eb3SErick Velez 17375f55eb3SErick Velez protected: 174*e05c1b46SDaniel Grumberg // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix GETBAR 17575f55eb3SErick Velez constexpr int getBar() const; 176*e05c1b46SDaniel Grumberg // GETBAR: "!testRelLabel": "memberOf $ c:@S@Foo@F@getBar#1 $ c:@S@Foo" 177b31414bfSDaniel Grumberg 178*e05c1b46SDaniel Grumberg // GETBAR-LABEL: "!testLabel": "c:@S@Foo@F@getBar#1" 179*e05c1b46SDaniel Grumberg // GETBAR: "accessLevel": "protected" 180*e05c1b46SDaniel Grumberg // GETBAR: "declarationFragments": [ 181*e05c1b46SDaniel Grumberg // GETBAR-NEXT: { 182*e05c1b46SDaniel Grumberg // GETBAR-NEXT: "kind": "keyword", 183*e05c1b46SDaniel Grumberg // GETBAR-NEXT: "spelling": "constexpr" 184*e05c1b46SDaniel Grumberg // GETBAR-NEXT: }, 185*e05c1b46SDaniel Grumberg // GETBAR-NEXT: { 186*e05c1b46SDaniel Grumberg // GETBAR-NEXT: "kind": "text", 187*e05c1b46SDaniel Grumberg // GETBAR-NEXT: "spelling": " " 188*e05c1b46SDaniel Grumberg // GETBAR-NEXT: }, 189*e05c1b46SDaniel Grumberg // GETBAR-NEXT: { 190*e05c1b46SDaniel Grumberg // GETBAR-NEXT: "kind": "typeIdentifier", 191*e05c1b46SDaniel Grumberg // GETBAR-NEXT: "preciseIdentifier": "c:I", 192*e05c1b46SDaniel Grumberg // GETBAR-NEXT: "spelling": "int" 193*e05c1b46SDaniel Grumberg // GETBAR-NEXT: }, 194*e05c1b46SDaniel Grumberg // GETBAR-NEXT: { 195*e05c1b46SDaniel Grumberg // GETBAR-NEXT: "kind": "text", 196*e05c1b46SDaniel Grumberg // GETBAR-NEXT: "spelling": " " 197*e05c1b46SDaniel Grumberg // GETBAR-NEXT: }, 198*e05c1b46SDaniel Grumberg // GETBAR-NEXT: { 199*e05c1b46SDaniel Grumberg // GETBAR-NEXT: "kind": "identifier", 200*e05c1b46SDaniel Grumberg // GETBAR-NEXT: "spelling": "getBar" 201*e05c1b46SDaniel Grumberg // GETBAR-NEXT: }, 202*e05c1b46SDaniel Grumberg // GETBAR-NEXT: { 203*e05c1b46SDaniel Grumberg // GETBAR-NEXT: "kind": "text", 204*e05c1b46SDaniel Grumberg // GETBAR-NEXT: "spelling": "() " 205*e05c1b46SDaniel Grumberg // GETBAR-NEXT: }, 206*e05c1b46SDaniel Grumberg // GETBAR-NEXT: { 207*e05c1b46SDaniel Grumberg // GETBAR-NEXT: "kind": "keyword", 208*e05c1b46SDaniel Grumberg // GETBAR-NEXT: "spelling": "const" 209*e05c1b46SDaniel Grumberg // GETBAR-NEXT: }, 210*e05c1b46SDaniel Grumberg // GETBAR-NEXT: { 211*e05c1b46SDaniel Grumberg // GETBAR-NEXT: "kind": "text", 212*e05c1b46SDaniel Grumberg // GETBAR-NEXT: "spelling": ";" 213*e05c1b46SDaniel Grumberg // GETBAR-NEXT: } 214*e05c1b46SDaniel Grumberg // GETBAR-NEXT: ], 215*e05c1b46SDaniel Grumberg }; 216*e05c1b46SDaniel Grumberg 217*e05c1b46SDaniel Grumberg // expected-no-diagnostics 218