// RUN: rm -rf %t // RUN: %clang_cc1 -extract-api --pretty-sgf --emit-sgf-symbol-labels-for-testing \ // RUN: -triple arm64-apple-macosx -std=c++17 -x c++-header %s -o %t/output.symbols.json -verify // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix FOO template class Foo { }; // FOO-LABEL: "!testLabel": "c:@ST>2#T#NI@Foo" // FOO: "declarationFragments": [ // FOO-NEXT: { // FOO-NEXT: "kind": "keyword", // FOO-NEXT: "spelling": "template" // FOO-NEXT: }, // FOO-NEXT: { // FOO-NEXT: "kind": "text", // FOO-NEXT: "spelling": " <" // FOO-NEXT: }, // FOO-NEXT: { // FOO-NEXT: "kind": "keyword", // FOO-NEXT: "spelling": "typename" // FOO-NEXT: }, // FOO-NEXT: { // FOO-NEXT: "kind": "text", // FOO-NEXT: "spelling": " " // FOO-NEXT: }, // FOO-NEXT: { // FOO-NEXT: "kind": "genericParameter", // FOO-NEXT: "spelling": "T" // FOO-NEXT: }, // FOO-NEXT: { // FOO-NEXT: "kind": "text", // FOO-NEXT: "spelling": ", " // FOO-NEXT: }, // FOO-NEXT: { // FOO-NEXT: "kind": "typeIdentifier", // FOO-NEXT: "preciseIdentifier": "c:I", // FOO-NEXT: "spelling": "int" // FOO-NEXT: }, // FOO-NEXT: { // FOO-NEXT: "kind": "text", // FOO-NEXT: "spelling": " " // FOO-NEXT: }, // FOO-NEXT: { // FOO-NEXT: "kind": "genericParameter", // FOO-NEXT: "spelling": "N" // FOO-NEXT: }, // FOO-NEXT: { // FOO-NEXT: "kind": "text", // FOO-NEXT: "spelling": " = 4> " // FOO-NEXT: }, // FOO-NEXT: { // FOO-NEXT: "kind": "keyword", // FOO-NEXT: "spelling": "class" // FOO-NEXT: }, // FOO-NEXT: { // FOO-NEXT: "kind": "text", // FOO-NEXT: "spelling": " " // FOO-NEXT: }, // FOO-NEXT: { // FOO-NEXT: "kind": "identifier", // FOO-NEXT: "spelling": "Foo" // FOO-NEXT: }, // FOO-NEXT: { // FOO-NEXT: "kind": "text", // FOO-NEXT: "spelling": ";" // FOO-NEXT: } // FOO-NEXT: ] // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix FOO-SPEC template class Foo { }; // FOO-SPEC-LABEL: "!testLabel": "c:@SP>1#T@Foo>#t0.0#VI4" // FOO-SPEC: "declarationFragments": [ // FOO-SPEC-NEXT: { // FOO-SPEC-NEXT: "kind": "keyword", // FOO-SPEC-NEXT: "spelling": "template" // FOO-SPEC-NEXT: }, // FOO-SPEC-NEXT: { // FOO-SPEC-NEXT: "kind": "text", // FOO-SPEC-NEXT: "spelling": " <" // FOO-SPEC-NEXT: }, // FOO-SPEC-NEXT: { // FOO-SPEC-NEXT: "kind": "keyword", // FOO-SPEC-NEXT: "spelling": "typename" // FOO-SPEC-NEXT: }, // FOO-SPEC-NEXT: { // FOO-SPEC-NEXT: "kind": "text", // FOO-SPEC-NEXT: "spelling": " " // FOO-SPEC-NEXT: }, // FOO-SPEC-NEXT: { // FOO-SPEC-NEXT: "kind": "genericParameter", // FOO-SPEC-NEXT: "spelling": "T" // FOO-SPEC-NEXT: }, // FOO-SPEC-NEXT: { // FOO-SPEC-NEXT: "kind": "text", // FOO-SPEC-NEXT: "spelling": "> " // FOO-SPEC-NEXT: }, // FOO-SPEC-NEXT: { // FOO-SPEC-NEXT: "kind": "keyword", // FOO-SPEC-NEXT: "spelling": "class" // FOO-SPEC-NEXT: }, // FOO-SPEC-NEXT: { // FOO-SPEC-NEXT: "kind": "text", // FOO-SPEC-NEXT: "spelling": " " // FOO-SPEC-NEXT: }, // FOO-SPEC-NEXT: { // FOO-SPEC-NEXT: "kind": "identifier", // FOO-SPEC-NEXT: "spelling": "Foo" // FOO-SPEC-NEXT: }, // FOO-SPEC-NEXT: { // FOO-SPEC-NEXT: "kind": "text", // FOO-SPEC-NEXT: "spelling": "<" // FOO-SPEC-NEXT: }, // FOO-SPEC-NEXT: { // FOO-SPEC-NEXT: "kind": "typeIdentifier", // FOO-SPEC-NEXT: "preciseIdentifier": "c:t0.0", // FOO-SPEC-NEXT: "spelling": "T" // FOO-SPEC-NEXT: }, // FOO-SPEC-NEXT: { // FOO-SPEC-NEXT: "kind": "text", // FOO-SPEC-NEXT: "spelling": ", 4>;" // FOO-SPEC-NEXT: } // FOO-SPEC-NEXT: ] // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix NEST template