| // 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 |