xref: /llvm-project/clang/test/ExtractAPI/class_template_param_inheritance.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 : public T {};
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     {
457ba37f4eSErick Velez       "kind": "inheritsFrom",
467ba37f4eSErick Velez       "source": "c:@ST>1#T@Foo",
477ba37f4eSErick Velez       "target": "",
487ba37f4eSErick Velez       "targetFallback": "T"
497ba37f4eSErick Velez     }
507ba37f4eSErick Velez   ],
517ba37f4eSErick Velez   "symbols": [
527ba37f4eSErick Velez     {
537ba37f4eSErick Velez       "accessLevel": "public",
547ba37f4eSErick Velez       "declarationFragments": [
557ba37f4eSErick Velez         {
567ba37f4eSErick Velez           "kind": "keyword",
577ba37f4eSErick Velez           "spelling": "template"
587ba37f4eSErick Velez         },
597ba37f4eSErick Velez         {
607ba37f4eSErick Velez           "kind": "text",
617ba37f4eSErick Velez           "spelling": " <"
627ba37f4eSErick Velez         },
637ba37f4eSErick Velez         {
647ba37f4eSErick Velez           "kind": "keyword",
657ba37f4eSErick Velez           "spelling": "typename"
667ba37f4eSErick Velez         },
677ba37f4eSErick Velez         {
687ba37f4eSErick Velez           "kind": "text",
697ba37f4eSErick Velez           "spelling": " "
707ba37f4eSErick Velez         },
717ba37f4eSErick Velez         {
727ba37f4eSErick Velez           "kind": "genericParameter",
737ba37f4eSErick Velez           "spelling": "T"
747ba37f4eSErick Velez         },
757ba37f4eSErick Velez         {
767ba37f4eSErick Velez           "kind": "text",
777ba37f4eSErick Velez           "spelling": "> "
787ba37f4eSErick Velez         },
797ba37f4eSErick Velez         {
807ba37f4eSErick Velez           "kind": "keyword",
817ba37f4eSErick Velez           "spelling": "class"
827ba37f4eSErick Velez         },
837ba37f4eSErick Velez         {
847ba37f4eSErick Velez           "kind": "text",
857ba37f4eSErick Velez           "spelling": " "
867ba37f4eSErick Velez         },
877ba37f4eSErick Velez         {
887ba37f4eSErick Velez           "kind": "identifier",
897ba37f4eSErick Velez           "spelling": "Foo"
907ba37f4eSErick Velez         },
917ba37f4eSErick Velez         {
927ba37f4eSErick Velez           "kind": "text",
937ba37f4eSErick Velez           "spelling": ";"
947ba37f4eSErick Velez         }
957ba37f4eSErick Velez       ],
967ba37f4eSErick Velez       "identifier": {
977ba37f4eSErick Velez         "interfaceLanguage": "c++",
987ba37f4eSErick Velez         "precise": "c:@ST>1#T@Foo"
997ba37f4eSErick Velez       },
1007ba37f4eSErick Velez       "kind": {
1017ba37f4eSErick Velez         "displayName": "Class",
1027ba37f4eSErick Velez         "identifier": "c++.class"
1037ba37f4eSErick Velez       },
1047ba37f4eSErick Velez       "location": {
1057ba37f4eSErick Velez         "position": {
10663537872SQuietMisdreavus           "character": 27,
10763537872SQuietMisdreavus           "line": 0
1087ba37f4eSErick Velez         },
1097ba37f4eSErick Velez         "uri": "file://INPUT_DIR/input.h"
1107ba37f4eSErick Velez       },
1117ba37f4eSErick Velez       "names": {
1127ba37f4eSErick Velez         "navigator": [
1137ba37f4eSErick Velez           {
1147ba37f4eSErick Velez             "kind": "identifier",
1157ba37f4eSErick Velez             "spelling": "Foo"
1167ba37f4eSErick Velez           }
1177ba37f4eSErick Velez         ],
1187ba37f4eSErick Velez         "subHeading": [
1197ba37f4eSErick Velez           {
1207ba37f4eSErick Velez             "kind": "identifier",
1217ba37f4eSErick Velez             "spelling": "Foo"
1227ba37f4eSErick Velez           }
1237ba37f4eSErick Velez         ],
1247ba37f4eSErick Velez         "title": "Foo"
1257ba37f4eSErick Velez       },
1267ba37f4eSErick Velez       "pathComponents": [
1277ba37f4eSErick Velez         "Foo"
1287ba37f4eSErick Velez       ],
1297ba37f4eSErick Velez       "swiftGenerics": {
1307ba37f4eSErick Velez         "parameters": [
1317ba37f4eSErick Velez           {
1327ba37f4eSErick Velez             "depth": 0,
1337ba37f4eSErick Velez             "index": 0,
1347ba37f4eSErick Velez             "name": "T"
1357ba37f4eSErick Velez           }
1367ba37f4eSErick Velez         ]
1377ba37f4eSErick Velez       }
1387ba37f4eSErick Velez     }
1397ba37f4eSErick Velez   ]
1407ba37f4eSErick Velez }
141