// RUN: rm -rf %t // RUN: %clang_cc1 -extract-api --pretty-sgf --emit-sgf-symbol-labels-for-testing \ // RUN: -fblocks -triple arm64-apple-macosx -x objective-c-header %s -o %t/output.symbols.json -verify @interface Foo // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix NOPARAM -(void)methodBlockNoParam:(void (^)())block; // NOPARAM-LABEL: "!testLabel": "c:objc(cs)Foo(im)methodBlockNoParam:" // NOPARAM: "declarationFragments": [ // NOPARAM-NEXT: { // NOPARAM-NEXT: "kind": "text", // NOPARAM-NEXT: "spelling": "- (" // NOPARAM-NEXT: }, // NOPARAM-NEXT: { // NOPARAM-NEXT: "kind": "typeIdentifier", // NOPARAM-NEXT: "preciseIdentifier": "c:v", // NOPARAM-NEXT: "spelling": "void" // NOPARAM-NEXT: }, // NOPARAM-NEXT: { // NOPARAM-NEXT: "kind": "text", // NOPARAM-NEXT: "spelling": ") " // NOPARAM-NEXT: }, // NOPARAM-NEXT: { // NOPARAM-NEXT: "kind": "identifier", // NOPARAM-NEXT: "spelling": "methodBlockNoParam:" // NOPARAM-NEXT: }, // NOPARAM-NEXT: { // NOPARAM-NEXT: "kind": "text", // NOPARAM-NEXT: "spelling": "(" // NOPARAM-NEXT: }, // NOPARAM-NEXT: { // NOPARAM-NEXT: "kind": "typeIdentifier", // NOPARAM-NEXT: "preciseIdentifier": "c:v", // NOPARAM-NEXT: "spelling": "void" // NOPARAM-NEXT: }, // NOPARAM-NEXT: { // NOPARAM-NEXT: "kind": "text", // NOPARAM-NEXT: "spelling": " (^)()) " // NOPARAM-NEXT: }, // NOPARAM-NEXT: { // NOPARAM-NEXT: "kind": "internalParam", // NOPARAM-NEXT: "spelling": "block" // NOPARAM-NEXT: }, // NOPARAM-NEXT: { // NOPARAM-NEXT: "kind": "text", // NOPARAM-NEXT: "spelling": ";" // NOPARAM-NEXT: } // NOPARAM-NEXT: ], // NOPARAM: "functionSignature": { // NOPARAM-NEXT: "parameters": [ // NOPARAM-NEXT: { // NOPARAM-NEXT: "declarationFragments": [ // NOPARAM-NEXT: { // NOPARAM-NEXT: "kind": "text", // NOPARAM-NEXT: "spelling": "(" // NOPARAM-NEXT: }, // NOPARAM-NEXT: { // NOPARAM-NEXT: "kind": "typeIdentifier", // NOPARAM-NEXT: "preciseIdentifier": "c:v", // NOPARAM-NEXT: "spelling": "void" // NOPARAM-NEXT: }, // NOPARAM-NEXT: { // NOPARAM-NEXT: "kind": "text", // NOPARAM-NEXT: "spelling": " (^)()) " // NOPARAM-NEXT: }, // NOPARAM-NEXT: { // NOPARAM-NEXT: "kind": "internalParam", // NOPARAM-NEXT: "spelling": "block" // NOPARAM-NEXT: } // NOPARAM-NEXT: ], // NOPARAM-NEXT: "name": "block" // NOPARAM-NEXT: } // NOPARAM-NEXT: ], // NOPARAM-NEXT: "returns": [ // NOPARAM-NEXT: { // NOPARAM-NEXT: "kind": "typeIdentifier", // NOPARAM-NEXT: "preciseIdentifier": "c:v", // NOPARAM-NEXT: "spelling": "void" // NOPARAM-NEXT: } // NOPARAM-NEXT: ] // NOPARAM-NEXT: } // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix PARAM -(void)methodBlockWithParam:(int (^)(int foo))block; // PARAM-LABEL: "!testLabel": "c:objc(cs)Foo(im)methodBlockWithParam:" // PARAM: "declarationFragments": [ // PARAM-NEXT: { // PARAM-NEXT: "kind": "text", // PARAM-NEXT: "spelling": "- (" // PARAM-NEXT: }, // PARAM-NEXT: { // PARAM-NEXT: "kind": "typeIdentifier", // PARAM-NEXT: "preciseIdentifier": "c:v", // PARAM-NEXT: "spelling": "void" // PARAM-NEXT: }, // PARAM-NEXT: { // PARAM-NEXT: "kind": "text", // PARAM-NEXT: "spelling": ") " // PARAM-NEXT: }, // PARAM-NEXT: { // PARAM-NEXT: "kind": "identifier", // PARAM-NEXT: "spelling": "methodBlockWithParam:" // PARAM-NEXT: }, // PARAM-NEXT: { // PARAM-NEXT: "kind": "text", // PARAM-NEXT: "spelling": "(" // PARAM-NEXT: }, // PARAM-NEXT: { // PARAM-NEXT: "kind": "typeIdentifier", // PARAM-NEXT: "preciseIdentifier": "c:I", // PARAM-NEXT: "spelling": "int" // PARAM-NEXT: }, // PARAM-NEXT: { // PARAM-NEXT: "kind": "text", // PARAM-NEXT: "spelling": " (^)(" // PARAM-NEXT: }, // PARAM-NEXT: { // PARAM-NEXT: "kind": "typeIdentifier", // PARAM-NEXT: "preciseIdentifier": "c:I", // PARAM-NEXT: "spelling": "int" // PARAM-NEXT: }, // PARAM-NEXT: { // PARAM-NEXT: "kind": "text", // PARAM-NEXT: "spelling": " " // PARAM-NEXT: }, // PARAM-NEXT: { // PARAM-NEXT: "kind": "internalParam", // PARAM-NEXT: "spelling": "foo" // PARAM-NEXT: }, // PARAM-NEXT: { // PARAM-NEXT: "kind": "text", // PARAM-NEXT: "spelling": ")) " // PARAM-NEXT: }, // PARAM-NEXT: { // PARAM-NEXT: "kind": "internalParam", // PARAM-NEXT: "spelling": "block" // PARAM-NEXT: }, // PARAM-NEXT: { // PARAM-NEXT: "kind": "text", // PARAM-NEXT: "spelling": ";" // PARAM-NEXT: } // PARAM-NEXT: ], // PARAM: "functionSignature": { // PARAM-NEXT: "parameters": [ // PARAM-NEXT: { // PARAM-NEXT: "declarationFragments": [ // PARAM-NEXT: { // PARAM-NEXT: "kind": "text", // PARAM-NEXT: "spelling": "(" // PARAM-NEXT: }, // PARAM-NEXT: { // PARAM-NEXT: "kind": "typeIdentifier", // PARAM-NEXT: "preciseIdentifier": "c:I", // PARAM-NEXT: "spelling": "int" // PARAM-NEXT: }, // PARAM-NEXT: { // PARAM-NEXT: "kind": "text", // PARAM-NEXT: "spelling": " (^)(" // PARAM-NEXT: }, // PARAM-NEXT: { // PARAM-NEXT: "kind": "typeIdentifier", // PARAM-NEXT: "preciseIdentifier": "c:I", // PARAM-NEXT: "spelling": "int" // PARAM-NEXT: }, // PARAM-NEXT: { // PARAM-NEXT: "kind": "text", // PARAM-NEXT: "spelling": " " // PARAM-NEXT: }, // PARAM-NEXT: { // PARAM-NEXT: "kind": "internalParam", // PARAM-NEXT: "spelling": "foo" // PARAM-NEXT: }, // PARAM-NEXT: { // PARAM-NEXT: "kind": "text", // PARAM-NEXT: "spelling": ")) " // PARAM-NEXT: }, // PARAM-NEXT: { // PARAM-NEXT: "kind": "internalParam", // PARAM-NEXT: "spelling": "block" // PARAM-NEXT: } // PARAM-NEXT: ], // PARAM-NEXT: "name": "block" // PARAM-NEXT: } // PARAM-NEXT: ], // PARAM-NEXT: "returns": [ // PARAM-NEXT: { // PARAM-NEXT: "kind": "typeIdentifier", // PARAM-NEXT: "preciseIdentifier": "c:v", // PARAM-NEXT: "spelling": "void" // PARAM-NEXT: } // PARAM-NEXT: ] // PARAM-NEXT: } // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix MULTIPARAM -(void)methodBlockWithMultipleParam:(int (^)(int foo, unsigned baz))block; // MULTIPARAM-LABEL: "!testLabel": "c:objc(cs)Foo(im)methodBlockWithMultipleParam:" // MULTIPARAM: "declarationFragments": [ // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "text", // MULTIPARAM-NEXT: "spelling": "- (" // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "typeIdentifier", // MULTIPARAM-NEXT: "preciseIdentifier": "c:v", // MULTIPARAM-NEXT: "spelling": "void" // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "text", // MULTIPARAM-NEXT: "spelling": ") " // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "identifier", // MULTIPARAM-NEXT: "spelling": "methodBlockWithMultipleParam:" // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "text", // MULTIPARAM-NEXT: "spelling": "(" // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "typeIdentifier", // MULTIPARAM-NEXT: "preciseIdentifier": "c:I", // MULTIPARAM-NEXT: "spelling": "int" // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "text", // MULTIPARAM-NEXT: "spelling": " (^)(" // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "typeIdentifier", // MULTIPARAM-NEXT: "preciseIdentifier": "c:I", // MULTIPARAM-NEXT: "spelling": "int" // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "text", // MULTIPARAM-NEXT: "spelling": " " // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "internalParam", // MULTIPARAM-NEXT: "spelling": "foo" // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "text", // MULTIPARAM-NEXT: "spelling": ", " // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "typeIdentifier", // MULTIPARAM-NEXT: "preciseIdentifier": "c:i", // MULTIPARAM-NEXT: "spelling": "unsigned int" // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "text", // MULTIPARAM-NEXT: "spelling": " " // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "internalParam", // MULTIPARAM-NEXT: "spelling": "baz" // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "text", // MULTIPARAM-NEXT: "spelling": ")) " // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "internalParam", // MULTIPARAM-NEXT: "spelling": "block" // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "text", // MULTIPARAM-NEXT: "spelling": ";" // MULTIPARAM-NEXT: } // MULTIPARAM-NEXT: ], // MULTIPARAM: "functionSignature": { // MULTIPARAM-NEXT: "parameters": [ // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "declarationFragments": [ // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "text", // MULTIPARAM-NEXT: "spelling": "(" // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "typeIdentifier", // MULTIPARAM-NEXT: "preciseIdentifier": "c:I", // MULTIPARAM-NEXT: "spelling": "int" // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "text", // MULTIPARAM-NEXT: "spelling": " (^)(" // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "typeIdentifier", // MULTIPARAM-NEXT: "preciseIdentifier": "c:I", // MULTIPARAM-NEXT: "spelling": "int" // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "text", // MULTIPARAM-NEXT: "spelling": " " // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "internalParam", // MULTIPARAM-NEXT: "spelling": "foo" // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "text", // MULTIPARAM-NEXT: "spelling": ", " // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "typeIdentifier", // MULTIPARAM-NEXT: "preciseIdentifier": "c:i", // MULTIPARAM-NEXT: "spelling": "unsigned int" // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "text", // MULTIPARAM-NEXT: "spelling": " " // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "internalParam", // MULTIPARAM-NEXT: "spelling": "baz" // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "text", // MULTIPARAM-NEXT: "spelling": ")) " // MULTIPARAM-NEXT: }, // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "internalParam", // MULTIPARAM-NEXT: "spelling": "block" // MULTIPARAM-NEXT: } // MULTIPARAM-NEXT: ], // MULTIPARAM-NEXT: "name": "block" // MULTIPARAM-NEXT: } // MULTIPARAM-NEXT: ], // MULTIPARAM-NEXT: "returns": [ // MULTIPARAM-NEXT: { // MULTIPARAM-NEXT: "kind": "typeIdentifier", // MULTIPARAM-NEXT: "preciseIdentifier": "c:v", // MULTIPARAM-NEXT: "spelling": "void" // MULTIPARAM-NEXT: } // MULTIPARAM-NEXT: ] // MULTIPARAM-NEXT: }, // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix VARIADIC -(void)methodBlockVariadic:(int (^)(int foo, ...))block; // VARIADIC-LABEL: "!testLabel": "c:objc(cs)Foo(im)methodBlockVariadic:" // VARIADIC: "declarationFragments": [ // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "text", // VARIADIC-NEXT: "spelling": "- (" // VARIADIC-NEXT: }, // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "typeIdentifier", // VARIADIC-NEXT: "preciseIdentifier": "c:v", // VARIADIC-NEXT: "spelling": "void" // VARIADIC-NEXT: }, // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "text", // VARIADIC-NEXT: "spelling": ") " // VARIADIC-NEXT: }, // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "identifier", // VARIADIC-NEXT: "spelling": "methodBlockVariadic:" // VARIADIC-NEXT: }, // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "text", // VARIADIC-NEXT: "spelling": "(" // VARIADIC-NEXT: }, // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "typeIdentifier", // VARIADIC-NEXT: "preciseIdentifier": "c:I", // VARIADIC-NEXT: "spelling": "int" // VARIADIC-NEXT: }, // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "text", // VARIADIC-NEXT: "spelling": " (^)(" // VARIADIC-NEXT: }, // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "typeIdentifier", // VARIADIC-NEXT: "preciseIdentifier": "c:I", // VARIADIC-NEXT: "spelling": "int" // VARIADIC-NEXT: }, // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "text", // VARIADIC-NEXT: "spelling": " " // VARIADIC-NEXT: }, // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "internalParam", // VARIADIC-NEXT: "spelling": "foo" // VARIADIC-NEXT: }, // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "text", // VARIADIC-NEXT: "spelling": ", ...)) " // VARIADIC-NEXT: }, // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "internalParam", // VARIADIC-NEXT: "spelling": "block" // VARIADIC-NEXT: }, // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "text", // VARIADIC-NEXT: "spelling": ";" // VARIADIC-NEXT: } // VARIADIC-NEXT: ], // VARIADIC: "functionSignature": { // VARIADIC-NEXT: "parameters": [ // VARIADIC-NEXT: { // VARIADIC-NEXT: "declarationFragments": [ // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "text", // VARIADIC-NEXT: "spelling": "(" // VARIADIC-NEXT: }, // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "typeIdentifier", // VARIADIC-NEXT: "preciseIdentifier": "c:I", // VARIADIC-NEXT: "spelling": "int" // VARIADIC-NEXT: }, // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "text", // VARIADIC-NEXT: "spelling": " (^)(" // VARIADIC-NEXT: }, // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "typeIdentifier", // VARIADIC-NEXT: "preciseIdentifier": "c:I", // VARIADIC-NEXT: "spelling": "int" // VARIADIC-NEXT: }, // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "text", // VARIADIC-NEXT: "spelling": " " // VARIADIC-NEXT: }, // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "internalParam", // VARIADIC-NEXT: "spelling": "foo" // VARIADIC-NEXT: }, // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "text", // VARIADIC-NEXT: "spelling": ", ...)) " // VARIADIC-NEXT: }, // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "internalParam", // VARIADIC-NEXT: "spelling": "block" // VARIADIC-NEXT: } // VARIADIC-NEXT: ], // VARIADIC-NEXT: "name": "block" // VARIADIC-NEXT: } // VARIADIC-NEXT: ], // VARIADIC-NEXT: "returns": [ // VARIADIC-NEXT: { // VARIADIC-NEXT: "kind": "typeIdentifier", // VARIADIC-NEXT: "preciseIdentifier": "c:v", // VARIADIC-NEXT: "spelling": "void" // VARIADIC-NEXT: } // VARIADIC-NEXT: ] // VARIADIC-NEXT: }, @end // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix FUNC void func(int (^arg)(int foo)); // FUNC-LABEL: "!testLabel": "c:@F@func" // FUNC: "declarationFragments": [ // FUNC-NEXT: { // FUNC-NEXT: "kind": "typeIdentifier", // FUNC-NEXT: "preciseIdentifier": "c:v", // FUNC-NEXT: "spelling": "void" // FUNC-NEXT: }, // FUNC-NEXT: { // FUNC-NEXT: "kind": "text", // FUNC-NEXT: "spelling": " " // FUNC-NEXT: }, // FUNC-NEXT: { // FUNC-NEXT: "kind": "identifier", // FUNC-NEXT: "spelling": "func" // FUNC-NEXT: }, // FUNC-NEXT: { // FUNC-NEXT: "kind": "text", // FUNC-NEXT: "spelling": "(" // FUNC-NEXT: }, // FUNC-NEXT: { // FUNC-NEXT: "kind": "typeIdentifier", // FUNC-NEXT: "preciseIdentifier": "c:I", // FUNC-NEXT: "spelling": "int" // FUNC-NEXT: }, // FUNC-NEXT: { // FUNC-NEXT: "kind": "text", // FUNC-NEXT: "spelling": " (^" // FUNC-NEXT: }, // FUNC-NEXT: { // FUNC-NEXT: "kind": "internalParam", // FUNC-NEXT: "spelling": "arg" // FUNC-NEXT: }, // FUNC-NEXT: { // FUNC-NEXT: "kind": "text", // FUNC-NEXT: "spelling": ")(" // FUNC-NEXT: }, // FUNC-NEXT: { // FUNC-NEXT: "kind": "typeIdentifier", // FUNC-NEXT: "preciseIdentifier": "c:I", // FUNC-NEXT: "spelling": "int" // FUNC-NEXT: }, // FUNC-NEXT: { // FUNC-NEXT: "kind": "text", // FUNC-NEXT: "spelling": " " // FUNC-NEXT: }, // FUNC-NEXT: { // FUNC-NEXT: "kind": "internalParam", // FUNC-NEXT: "spelling": "foo" // FUNC-NEXT: }, // FUNC-NEXT: { // FUNC-NEXT: "kind": "text", // FUNC-NEXT: "spelling": "));" // FUNC-NEXT: } // FUNC-NEXT: ], // FUNC: "functionSignature": { // FUNC-NEXT: "parameters": [ // FUNC-NEXT: { // FUNC-NEXT: "declarationFragments": [ // FUNC-NEXT: { // FUNC-NEXT: "kind": "typeIdentifier", // FUNC-NEXT: "preciseIdentifier": "c:I", // FUNC-NEXT: "spelling": "int" // FUNC-NEXT: }, // FUNC-NEXT: { // FUNC-NEXT: "kind": "text", // FUNC-NEXT: "spelling": " (^" // FUNC-NEXT: }, // FUNC-NEXT: { // FUNC-NEXT: "kind": "internalParam", // FUNC-NEXT: "spelling": "arg" // FUNC-NEXT: }, // FUNC-NEXT: { // FUNC-NEXT: "kind": "text", // FUNC-NEXT: "spelling": ")(" // FUNC-NEXT: }, // FUNC-NEXT: { // FUNC-NEXT: "kind": "typeIdentifier", // FUNC-NEXT: "preciseIdentifier": "c:I", // FUNC-NEXT: "spelling": "int" // FUNC-NEXT: }, // FUNC-NEXT: { // FUNC-NEXT: "kind": "text", // FUNC-NEXT: "spelling": " " // FUNC-NEXT: }, // FUNC-NEXT: { // FUNC-NEXT: "kind": "internalParam", // FUNC-NEXT: "spelling": "foo" // FUNC-NEXT: }, // FUNC-NEXT: { // FUNC-NEXT: "kind": "text", // FUNC-NEXT: "spelling": ")" // FUNC-NEXT: } // FUNC-NEXT: ], // FUNC-NEXT: "name": "arg" // FUNC-NEXT: } // FUNC-NEXT: ], // FUNC-NEXT: "returns": [ // FUNC-NEXT: { // FUNC-NEXT: "kind": "typeIdentifier", // FUNC-NEXT: "preciseIdentifier": "c:v", // FUNC-NEXT: "spelling": "void" // FUNC-NEXT: } // FUNC-NEXT: ] // FUNC-NEXT: }, // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix GLOBAL int (^global)(int foo); // GLOBAL-LABEL: "!testLabel": "c:@global" // GLOBAL: "declarationFragments": [ // GLOBAL-NEXT: { // GLOBAL-NEXT: "kind": "typeIdentifier", // GLOBAL-NEXT: "preciseIdentifier": "c:I", // GLOBAL-NEXT: "spelling": "int" // GLOBAL-NEXT: }, // GLOBAL-NEXT: { // GLOBAL-NEXT: "kind": "text", // GLOBAL-NEXT: "spelling": " (^" // GLOBAL-NEXT: }, // GLOBAL-NEXT: { // GLOBAL-NEXT: "kind": "identifier", // GLOBAL-NEXT: "spelling": "global" // GLOBAL-NEXT: }, // GLOBAL-NEXT: { // GLOBAL-NEXT: "kind": "text", // GLOBAL-NEXT: "spelling": ")(" // GLOBAL-NEXT: }, // GLOBAL-NEXT: { // GLOBAL-NEXT: "kind": "typeIdentifier", // GLOBAL-NEXT: "preciseIdentifier": "c:I", // GLOBAL-NEXT: "spelling": "int" // GLOBAL-NEXT: }, // GLOBAL-NEXT: { // GLOBAL-NEXT: "kind": "text", // GLOBAL-NEXT: "spelling": " " // GLOBAL-NEXT: }, // GLOBAL-NEXT: { // GLOBAL-NEXT: "kind": "internalParam", // GLOBAL-NEXT: "spelling": "foo" // GLOBAL-NEXT: }, // GLOBAL-NEXT: { // GLOBAL-NEXT: "kind": "text", // GLOBAL-NEXT: "spelling": ");" // GLOBAL-NEXT: } // GLOBAL-NEXT: ], ///expected-no-diagnostics