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