xref: /llvm-project/clang/test/ExtractAPI/class_template.cpp (revision 7a6747939218efbe3b1d2cc0f896dfa97c0ff40f)
17ba37f4eSErick Velez // RUN: rm -rf %t
27ba37f4eSErick Velez // RUN: split-file %s %t
37ba37f4eSErick Velez // RUN: sed -e "s@INPUT_DIR@%{/t:regex_replacement}@g" \
47ba37f4eSErick Velez // RUN: %t/reference.output.json.in >> %t/reference.output.json
5*e05c1b46SDaniel Grumberg // RUN: %clang_cc1 -extract-api --pretty-sgf -triple arm64-apple-macosx \
67ba37f4eSErick Velez // RUN:   -x c++-header %t/input.h -o %t/output.json -verify
77ba37f4eSErick Velez 
87ba37f4eSErick Velez // Generator version is not consistent across test runs, normalize it.
97ba37f4eSErick Velez // RUN: sed -e "s@\"generator\": \".*\"@\"generator\": \"?\"@g" \
107ba37f4eSErick Velez // RUN: %t/output.json >> %t/output-normalized.json
117ba37f4eSErick Velez // RUN: diff %t/reference.output.json %t/output-normalized.json
127ba37f4eSErick Velez 
137ba37f4eSErick Velez //--- input.h
147ba37f4eSErick Velez template<typename T> class Foo {};
157ba37f4eSErick Velez 
167ba37f4eSErick Velez /// expected-no-diagnostics
177ba37f4eSErick Velez 
187ba37f4eSErick Velez //--- reference.output.json.in
197ba37f4eSErick Velez {
207ba37f4eSErick Velez   "metadata": {
217ba37f4eSErick Velez     "formatVersion": {
227ba37f4eSErick Velez       "major": 0,
237ba37f4eSErick Velez       "minor": 5,
247ba37f4eSErick Velez       "patch": 3
257ba37f4eSErick Velez     },
267ba37f4eSErick Velez     "generator": "?"
277ba37f4eSErick Velez   },
287ba37f4eSErick Velez   "module": {
297ba37f4eSErick Velez     "name": "",
307ba37f4eSErick Velez     "platform": {
317ba37f4eSErick Velez       "architecture": "arm64",
327ba37f4eSErick Velez       "operatingSystem": {
337ba37f4eSErick Velez         "minimumVersion": {
347ba37f4eSErick Velez           "major": 11,
357ba37f4eSErick Velez           "minor": 0,
367ba37f4eSErick Velez           "patch": 0
377ba37f4eSErick Velez         },
387ba37f4eSErick Velez         "name": "macosx"
397ba37f4eSErick Velez       },
407ba37f4eSErick Velez       "vendor": "apple"
417ba37f4eSErick Velez     }
427ba37f4eSErick Velez   },
437ba37f4eSErick Velez   "relationships": [],
447ba37f4eSErick Velez   "symbols": [
457ba37f4eSErick Velez     {
467ba37f4eSErick Velez       "accessLevel": "public",
477ba37f4eSErick Velez       "declarationFragments": [
487ba37f4eSErick Velez         {
497ba37f4eSErick Velez           "kind": "keyword",
507ba37f4eSErick Velez           "spelling": "template"
517ba37f4eSErick Velez         },
527ba37f4eSErick Velez         {
537ba37f4eSErick Velez           "kind": "text",
547ba37f4eSErick Velez           "spelling": " <"
557ba37f4eSErick Velez         },
567ba37f4eSErick Velez         {
577ba37f4eSErick Velez           "kind": "keyword",
587ba37f4eSErick Velez           "spelling": "typename"
597ba37f4eSErick Velez         },
607ba37f4eSErick Velez         {
617ba37f4eSErick Velez           "kind": "text",
627ba37f4eSErick Velez           "spelling": " "
637ba37f4eSErick Velez         },
647ba37f4eSErick Velez         {
657ba37f4eSErick Velez           "kind": "genericParameter",
667ba37f4eSErick Velez           "spelling": "T"
677ba37f4eSErick Velez         },
687ba37f4eSErick Velez         {
697ba37f4eSErick Velez           "kind": "text",
707ba37f4eSErick Velez           "spelling": "> "
717ba37f4eSErick Velez         },
727ba37f4eSErick Velez         {
737ba37f4eSErick Velez           "kind": "keyword",
747ba37f4eSErick Velez           "spelling": "class"
757ba37f4eSErick Velez         },
767ba37f4eSErick Velez         {
777ba37f4eSErick Velez           "kind": "text",
787ba37f4eSErick Velez           "spelling": " "
797ba37f4eSErick Velez         },
807ba37f4eSErick Velez         {
817ba37f4eSErick Velez           "kind": "identifier",
827ba37f4eSErick Velez           "spelling": "Foo"
837ba37f4eSErick Velez         },
847ba37f4eSErick Velez         {
857ba37f4eSErick Velez           "kind": "text",
867ba37f4eSErick Velez           "spelling": ";"
877ba37f4eSErick Velez         }
887ba37f4eSErick Velez       ],
897ba37f4eSErick Velez       "identifier": {
907ba37f4eSErick Velez         "interfaceLanguage": "c++",
917ba37f4eSErick Velez         "precise": "c:@ST>1#T@Foo"
927ba37f4eSErick Velez       },
937ba37f4eSErick Velez       "kind": {
947ba37f4eSErick Velez         "displayName": "Class",
957ba37f4eSErick Velez         "identifier": "c++.class"
967ba37f4eSErick Velez       },
977ba37f4eSErick Velez       "location": {
987ba37f4eSErick Velez         "position": {
9963537872SQuietMisdreavus           "character": 27,
10063537872SQuietMisdreavus           "line": 0
1017ba37f4eSErick Velez         },
1027ba37f4eSErick Velez         "uri": "file://INPUT_DIR/input.h"
1037ba37f4eSErick Velez       },
1047ba37f4eSErick Velez       "names": {
1057ba37f4eSErick Velez         "navigator": [
1067ba37f4eSErick Velez           {
1077ba37f4eSErick Velez             "kind": "identifier",
1087ba37f4eSErick Velez             "spelling": "Foo"
1097ba37f4eSErick Velez           }
1107ba37f4eSErick Velez         ],
1117ba37f4eSErick Velez         "subHeading": [
1127ba37f4eSErick Velez           {
1137ba37f4eSErick Velez             "kind": "identifier",
1147ba37f4eSErick Velez             "spelling": "Foo"
1157ba37f4eSErick Velez           }
1167ba37f4eSErick Velez         ],
1177ba37f4eSErick Velez         "title": "Foo"
1187ba37f4eSErick Velez       },
1197ba37f4eSErick Velez       "pathComponents": [
1207ba37f4eSErick Velez         "Foo"
1217ba37f4eSErick Velez       ],
1227ba37f4eSErick Velez       "swiftGenerics": {
1237ba37f4eSErick Velez         "parameters": [
1247ba37f4eSErick Velez           {
1257ba37f4eSErick Velez             "depth": 0,
1267ba37f4eSErick Velez             "index": 0,
1277ba37f4eSErick Velez             "name": "T"
1287ba37f4eSErick Velez           }
1297ba37f4eSErick Velez         ]
1307ba37f4eSErick Velez       }
1317ba37f4eSErick Velez     }
1327ba37f4eSErick Velez   ]
1337ba37f4eSErick Velez }
134