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 -std=c++20 -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> concept Foo = true; 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": "concept" 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:@CT@Foo" 927ba37f4eSErick Velez }, 937ba37f4eSErick Velez "kind": { 947ba37f4eSErick Velez "displayName": "Concept", 957ba37f4eSErick Velez "identifier": "c++.concept" 967ba37f4eSErick Velez }, 977ba37f4eSErick Velez "location": { 987ba37f4eSErick Velez "position": { 9963537872SQuietMisdreavus "character": 29, 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