226 lines · cpp
1// RUN: rm -rf %t2// 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 -verify4 5class Foo {6 // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix GETCOUNT7 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 SETL48 virtual 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": "keyword",54 // SETL-NEXT: "spelling": "virtual"55 // SETL-NEXT: },56 // SETL-NEXT: {57 // SETL-NEXT: "kind": "text",58 // SETL-NEXT: "spelling": " "59 // SETL-NEXT: },60 // SETL-NEXT: {61 // SETL-NEXT: "kind": "typeIdentifier",62 // SETL-NEXT: "preciseIdentifier": "c:v",63 // SETL-NEXT: "spelling": "void"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": "identifier",71 // SETL-NEXT: "spelling": "setLength"72 // SETL-NEXT: },73 // SETL-NEXT: {74 // SETL-NEXT: "kind": "text",75 // SETL-NEXT: "spelling": "("76 // SETL-NEXT: },77 // SETL-NEXT: {78 // SETL-NEXT: "kind": "typeIdentifier",79 // SETL-NEXT: "preciseIdentifier": "c:I",80 // SETL-NEXT: "spelling": "int"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": "internalParam",88 // SETL-NEXT: "spelling": "length"89 // SETL-NEXT: },90 // SETL-NEXT: {91 // SETL-NEXT: "kind": "text",92 // SETL-NEXT: "spelling": ") "93 // SETL-NEXT: },94 // SETL-NEXT: {95 // SETL-NEXT: "kind": "keyword",96 // SETL-NEXT: "spelling": "noexcept"97 // SETL-NEXT: },98 // SETL-NEXT: {99 // SETL-NEXT: "kind": "text",100 // SETL-NEXT: "spelling": ";"101 // SETL-NEXT: }102 // SETL-NEXT: ],103 // SETL: "functionSignature": {104 // SETL-NEXT: "parameters": [105 // SETL-NEXT: {106 // SETL-NEXT: "declarationFragments": [107 // SETL-NEXT: {108 // SETL-NEXT: "kind": "typeIdentifier",109 // SETL-NEXT: "preciseIdentifier": "c:I",110 // SETL-NEXT: "spelling": "int"111 // SETL-NEXT: },112 // SETL-NEXT: {113 // SETL-NEXT: "kind": "text",114 // SETL-NEXT: "spelling": " "115 // SETL-NEXT: },116 // SETL-NEXT: {117 // SETL-NEXT: "kind": "internalParam",118 // SETL-NEXT: "spelling": "length"119 // SETL-NEXT: }120 // SETL-NEXT: ],121 // SETL-NEXT: "name": "length"122 // SETL-NEXT: }123 // SETL-NEXT: ],124 // SETL-NEXT: "returns": [125 // SETL-NEXT: {126 // SETL-NEXT: "kind": "typeIdentifier",127 // SETL-NEXT: "preciseIdentifier": "c:v",128 // SETL-NEXT: "spelling": "void"129 // SETL-NEXT: }130 // SETL-NEXT: ]131 // SETL-NEXT: },132 133public:134 // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix GETFOO135 static double getFoo();136 // GETFOO: "!testRelLabel": "memberOf $ c:@S@Foo@F@getFoo#S $ c:@S@Foo"137 138 // GETFOO-LABEL: "!testLabel": "c:@S@Foo@F@getFoo#S"139 // GETFOO: "accessLevel": "public",140 // GETFOO: "declarationFragments": [141 // GETFOO-NEXT: {142 // GETFOO-NEXT: "kind": "keyword",143 // GETFOO-NEXT: "spelling": "static"144 // GETFOO-NEXT: },145 // GETFOO-NEXT: {146 // GETFOO-NEXT: "kind": "text",147 // GETFOO-NEXT: "spelling": " "148 // GETFOO-NEXT: },149 // GETFOO-NEXT: {150 // GETFOO-NEXT: "kind": "typeIdentifier",151 // GETFOO-NEXT: "preciseIdentifier": "c:d",152 // GETFOO-NEXT: "spelling": "double"153 // GETFOO-NEXT: },154 // GETFOO-NEXT: {155 // GETFOO-NEXT: "kind": "text",156 // GETFOO-NEXT: "spelling": " "157 // GETFOO-NEXT: },158 // GETFOO-NEXT: {159 // GETFOO-NEXT: "kind": "identifier",160 // GETFOO-NEXT: "spelling": "getFoo"161 // GETFOO-NEXT: },162 // GETFOO-NEXT: {163 // GETFOO-NEXT: "kind": "text",164 // GETFOO-NEXT: "spelling": "();"165 // GETFOO-NEXT: }166 // GETFOO-NEXT: ],167 // GETFOO: "functionSignature": {168 // GETFOO-NEXT: "returns": [169 // GETFOO-NEXT: {170 // GETFOO-NEXT: "kind": "typeIdentifier",171 // GETFOO-NEXT: "preciseIdentifier": "c:d",172 // GETFOO-NEXT: "spelling": "double"173 // GETFOO-NEXT: }174 // GETFOO-NEXT: ]175 // GETFOO-NEXT: },176 // GETFOO: "kind": {177 // GETFOO-NEXT: "displayName": "Static Method",178 // GETFOO-NEXT: "identifier": "c++.type.method"179 // GETFOO-NEXT: },180 181protected:182 // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix GETBAR183 constexpr int getBar() const;184 // GETBAR: "!testRelLabel": "memberOf $ c:@S@Foo@F@getBar#1 $ c:@S@Foo"185 186 // GETBAR-LABEL: "!testLabel": "c:@S@Foo@F@getBar#1"187 // GETBAR: "accessLevel": "protected"188 // GETBAR: "declarationFragments": [189 // GETBAR-NEXT: {190 // GETBAR-NEXT: "kind": "keyword",191 // GETBAR-NEXT: "spelling": "constexpr"192 // GETBAR-NEXT: },193 // GETBAR-NEXT: {194 // GETBAR-NEXT: "kind": "text",195 // GETBAR-NEXT: "spelling": " "196 // GETBAR-NEXT: },197 // GETBAR-NEXT: {198 // GETBAR-NEXT: "kind": "typeIdentifier",199 // GETBAR-NEXT: "preciseIdentifier": "c:I",200 // GETBAR-NEXT: "spelling": "int"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": "identifier",208 // GETBAR-NEXT: "spelling": "getBar"209 // GETBAR-NEXT: },210 // GETBAR-NEXT: {211 // GETBAR-NEXT: "kind": "text",212 // GETBAR-NEXT: "spelling": "() "213 // GETBAR-NEXT: },214 // GETBAR-NEXT: {215 // GETBAR-NEXT: "kind": "keyword",216 // GETBAR-NEXT: "spelling": "const"217 // GETBAR-NEXT: },218 // GETBAR-NEXT: {219 // GETBAR-NEXT: "kind": "text",220 // GETBAR-NEXT: "spelling": ";"221 // GETBAR-NEXT: }222 // GETBAR-NEXT: ],223};224 225// expected-no-diagnostics226