599 lines · plain
1// RUN: rm -rf %t2// RUN: %clang_cc1 -extract-api --pretty-sgf --emit-sgf-symbol-labels-for-testing \3// RUN: -fblocks -triple arm64-apple-macosx -x objective-c-header %s -o %t/output.symbols.json -verify4 5@interface Foo6// RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix NOPARAM7-(void)methodBlockNoParam:(void (^)())block;8// NOPARAM-LABEL: "!testLabel": "c:objc(cs)Foo(im)methodBlockNoParam:"9// NOPARAM: "declarationFragments": [10// NOPARAM-NEXT: {11// NOPARAM-NEXT: "kind": "text",12// NOPARAM-NEXT: "spelling": "- ("13// NOPARAM-NEXT: },14// NOPARAM-NEXT: {15// NOPARAM-NEXT: "kind": "typeIdentifier",16// NOPARAM-NEXT: "preciseIdentifier": "c:v",17// NOPARAM-NEXT: "spelling": "void"18// NOPARAM-NEXT: },19// NOPARAM-NEXT: {20// NOPARAM-NEXT: "kind": "text",21// NOPARAM-NEXT: "spelling": ") "22// NOPARAM-NEXT: },23// NOPARAM-NEXT: {24// NOPARAM-NEXT: "kind": "identifier",25// NOPARAM-NEXT: "spelling": "methodBlockNoParam:"26// NOPARAM-NEXT: },27// NOPARAM-NEXT: {28// NOPARAM-NEXT: "kind": "text",29// NOPARAM-NEXT: "spelling": "("30// NOPARAM-NEXT: },31// NOPARAM-NEXT: {32// NOPARAM-NEXT: "kind": "typeIdentifier",33// NOPARAM-NEXT: "preciseIdentifier": "c:v",34// NOPARAM-NEXT: "spelling": "void"35// NOPARAM-NEXT: },36// NOPARAM-NEXT: {37// NOPARAM-NEXT: "kind": "text",38// NOPARAM-NEXT: "spelling": " (^)()) "39// NOPARAM-NEXT: },40// NOPARAM-NEXT: {41// NOPARAM-NEXT: "kind": "internalParam",42// NOPARAM-NEXT: "spelling": "block"43// NOPARAM-NEXT: },44// NOPARAM-NEXT: {45// NOPARAM-NEXT: "kind": "text",46// NOPARAM-NEXT: "spelling": ";"47// NOPARAM-NEXT: }48// NOPARAM-NEXT: ],49// NOPARAM: "functionSignature": {50// NOPARAM-NEXT: "parameters": [51// NOPARAM-NEXT: {52// NOPARAM-NEXT: "declarationFragments": [53// NOPARAM-NEXT: {54// NOPARAM-NEXT: "kind": "text",55// NOPARAM-NEXT: "spelling": "("56// NOPARAM-NEXT: },57// NOPARAM-NEXT: {58// NOPARAM-NEXT: "kind": "typeIdentifier",59// NOPARAM-NEXT: "preciseIdentifier": "c:v",60// NOPARAM-NEXT: "spelling": "void"61// NOPARAM-NEXT: },62// NOPARAM-NEXT: {63// NOPARAM-NEXT: "kind": "text",64// NOPARAM-NEXT: "spelling": " (^)()) "65// NOPARAM-NEXT: },66// NOPARAM-NEXT: {67// NOPARAM-NEXT: "kind": "internalParam",68// NOPARAM-NEXT: "spelling": "block"69// NOPARAM-NEXT: }70// NOPARAM-NEXT: ],71// NOPARAM-NEXT: "name": "block"72// NOPARAM-NEXT: }73// NOPARAM-NEXT: ],74// NOPARAM-NEXT: "returns": [75// NOPARAM-NEXT: {76// NOPARAM-NEXT: "kind": "typeIdentifier",77// NOPARAM-NEXT: "preciseIdentifier": "c:v",78// NOPARAM-NEXT: "spelling": "void"79// NOPARAM-NEXT: }80// NOPARAM-NEXT: ]81// NOPARAM-NEXT: }82 83// RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix PARAM84-(void)methodBlockWithParam:(int (^)(int foo))block;85// PARAM-LABEL: "!testLabel": "c:objc(cs)Foo(im)methodBlockWithParam:"86// PARAM: "declarationFragments": [87// PARAM-NEXT: {88// PARAM-NEXT: "kind": "text",89// PARAM-NEXT: "spelling": "- ("90// PARAM-NEXT: },91// PARAM-NEXT: {92// PARAM-NEXT: "kind": "typeIdentifier",93// PARAM-NEXT: "preciseIdentifier": "c:v",94// PARAM-NEXT: "spelling": "void"95// PARAM-NEXT: },96// PARAM-NEXT: {97// PARAM-NEXT: "kind": "text",98// PARAM-NEXT: "spelling": ") "99// PARAM-NEXT: },100// PARAM-NEXT: {101// PARAM-NEXT: "kind": "identifier",102// PARAM-NEXT: "spelling": "methodBlockWithParam:"103// PARAM-NEXT: },104// PARAM-NEXT: {105// PARAM-NEXT: "kind": "text",106// PARAM-NEXT: "spelling": "("107// PARAM-NEXT: },108// PARAM-NEXT: {109// PARAM-NEXT: "kind": "typeIdentifier",110// PARAM-NEXT: "preciseIdentifier": "c:I",111// PARAM-NEXT: "spelling": "int"112// PARAM-NEXT: },113// PARAM-NEXT: {114// PARAM-NEXT: "kind": "text",115// PARAM-NEXT: "spelling": " (^)("116// PARAM-NEXT: },117// PARAM-NEXT: {118// PARAM-NEXT: "kind": "typeIdentifier",119// PARAM-NEXT: "preciseIdentifier": "c:I",120// PARAM-NEXT: "spelling": "int"121// PARAM-NEXT: },122// PARAM-NEXT: {123// PARAM-NEXT: "kind": "text",124// PARAM-NEXT: "spelling": " "125// PARAM-NEXT: },126// PARAM-NEXT: {127// PARAM-NEXT: "kind": "internalParam",128// PARAM-NEXT: "spelling": "foo"129// PARAM-NEXT: },130// PARAM-NEXT: {131// PARAM-NEXT: "kind": "text",132// PARAM-NEXT: "spelling": ")) "133// PARAM-NEXT: },134// PARAM-NEXT: {135// PARAM-NEXT: "kind": "internalParam",136// PARAM-NEXT: "spelling": "block"137// PARAM-NEXT: },138// PARAM-NEXT: {139// PARAM-NEXT: "kind": "text",140// PARAM-NEXT: "spelling": ";"141// PARAM-NEXT: }142// PARAM-NEXT: ],143// PARAM: "functionSignature": {144// PARAM-NEXT: "parameters": [145// PARAM-NEXT: {146// PARAM-NEXT: "declarationFragments": [147// PARAM-NEXT: {148// PARAM-NEXT: "kind": "text",149// PARAM-NEXT: "spelling": "("150// PARAM-NEXT: },151// PARAM-NEXT: {152// PARAM-NEXT: "kind": "typeIdentifier",153// PARAM-NEXT: "preciseIdentifier": "c:I",154// PARAM-NEXT: "spelling": "int"155// PARAM-NEXT: },156// PARAM-NEXT: {157// PARAM-NEXT: "kind": "text",158// PARAM-NEXT: "spelling": " (^)("159// PARAM-NEXT: },160// PARAM-NEXT: {161// PARAM-NEXT: "kind": "typeIdentifier",162// PARAM-NEXT: "preciseIdentifier": "c:I",163// PARAM-NEXT: "spelling": "int"164// PARAM-NEXT: },165// PARAM-NEXT: {166// PARAM-NEXT: "kind": "text",167// PARAM-NEXT: "spelling": " "168// PARAM-NEXT: },169// PARAM-NEXT: {170// PARAM-NEXT: "kind": "internalParam",171// PARAM-NEXT: "spelling": "foo"172// PARAM-NEXT: },173// PARAM-NEXT: {174// PARAM-NEXT: "kind": "text",175// PARAM-NEXT: "spelling": ")) "176// PARAM-NEXT: },177// PARAM-NEXT: {178// PARAM-NEXT: "kind": "internalParam",179// PARAM-NEXT: "spelling": "block"180// PARAM-NEXT: }181// PARAM-NEXT: ],182// PARAM-NEXT: "name": "block"183// PARAM-NEXT: }184// PARAM-NEXT: ],185// PARAM-NEXT: "returns": [186// PARAM-NEXT: {187// PARAM-NEXT: "kind": "typeIdentifier",188// PARAM-NEXT: "preciseIdentifier": "c:v",189// PARAM-NEXT: "spelling": "void"190// PARAM-NEXT: }191// PARAM-NEXT: ]192// PARAM-NEXT: }193 194// RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix MULTIPARAM195-(void)methodBlockWithMultipleParam:(int (^)(int foo, unsigned baz))block;196// MULTIPARAM-LABEL: "!testLabel": "c:objc(cs)Foo(im)methodBlockWithMultipleParam:"197// MULTIPARAM: "declarationFragments": [198// MULTIPARAM-NEXT: {199// MULTIPARAM-NEXT: "kind": "text",200// MULTIPARAM-NEXT: "spelling": "- ("201// MULTIPARAM-NEXT: },202// MULTIPARAM-NEXT: {203// MULTIPARAM-NEXT: "kind": "typeIdentifier",204// MULTIPARAM-NEXT: "preciseIdentifier": "c:v",205// MULTIPARAM-NEXT: "spelling": "void"206// MULTIPARAM-NEXT: },207// MULTIPARAM-NEXT: {208// MULTIPARAM-NEXT: "kind": "text",209// MULTIPARAM-NEXT: "spelling": ") "210// MULTIPARAM-NEXT: },211// MULTIPARAM-NEXT: {212// MULTIPARAM-NEXT: "kind": "identifier",213// MULTIPARAM-NEXT: "spelling": "methodBlockWithMultipleParam:"214// MULTIPARAM-NEXT: },215// MULTIPARAM-NEXT: {216// MULTIPARAM-NEXT: "kind": "text",217// MULTIPARAM-NEXT: "spelling": "("218// MULTIPARAM-NEXT: },219// MULTIPARAM-NEXT: {220// MULTIPARAM-NEXT: "kind": "typeIdentifier",221// MULTIPARAM-NEXT: "preciseIdentifier": "c:I",222// MULTIPARAM-NEXT: "spelling": "int"223// MULTIPARAM-NEXT: },224// MULTIPARAM-NEXT: {225// MULTIPARAM-NEXT: "kind": "text",226// MULTIPARAM-NEXT: "spelling": " (^)("227// MULTIPARAM-NEXT: },228// MULTIPARAM-NEXT: {229// MULTIPARAM-NEXT: "kind": "typeIdentifier",230// MULTIPARAM-NEXT: "preciseIdentifier": "c:I",231// MULTIPARAM-NEXT: "spelling": "int"232// MULTIPARAM-NEXT: },233// MULTIPARAM-NEXT: {234// MULTIPARAM-NEXT: "kind": "text",235// MULTIPARAM-NEXT: "spelling": " "236// MULTIPARAM-NEXT: },237// MULTIPARAM-NEXT: {238// MULTIPARAM-NEXT: "kind": "internalParam",239// MULTIPARAM-NEXT: "spelling": "foo"240// MULTIPARAM-NEXT: },241// MULTIPARAM-NEXT: {242// MULTIPARAM-NEXT: "kind": "text",243// MULTIPARAM-NEXT: "spelling": ", "244// MULTIPARAM-NEXT: },245// MULTIPARAM-NEXT: {246// MULTIPARAM-NEXT: "kind": "typeIdentifier",247// MULTIPARAM-NEXT: "preciseIdentifier": "c:i",248// MULTIPARAM-NEXT: "spelling": "unsigned int"249// MULTIPARAM-NEXT: },250// MULTIPARAM-NEXT: {251// MULTIPARAM-NEXT: "kind": "text",252// MULTIPARAM-NEXT: "spelling": " "253// MULTIPARAM-NEXT: },254// MULTIPARAM-NEXT: {255// MULTIPARAM-NEXT: "kind": "internalParam",256// MULTIPARAM-NEXT: "spelling": "baz"257// MULTIPARAM-NEXT: },258// MULTIPARAM-NEXT: {259// MULTIPARAM-NEXT: "kind": "text",260// MULTIPARAM-NEXT: "spelling": ")) "261// MULTIPARAM-NEXT: },262// MULTIPARAM-NEXT: {263// MULTIPARAM-NEXT: "kind": "internalParam",264// MULTIPARAM-NEXT: "spelling": "block"265// MULTIPARAM-NEXT: },266// MULTIPARAM-NEXT: {267// MULTIPARAM-NEXT: "kind": "text",268// MULTIPARAM-NEXT: "spelling": ";"269// MULTIPARAM-NEXT: }270// MULTIPARAM-NEXT: ],271// MULTIPARAM: "functionSignature": {272// MULTIPARAM-NEXT: "parameters": [273// MULTIPARAM-NEXT: {274// MULTIPARAM-NEXT: "declarationFragments": [275// MULTIPARAM-NEXT: {276// MULTIPARAM-NEXT: "kind": "text",277// MULTIPARAM-NEXT: "spelling": "("278// MULTIPARAM-NEXT: },279// MULTIPARAM-NEXT: {280// MULTIPARAM-NEXT: "kind": "typeIdentifier",281// MULTIPARAM-NEXT: "preciseIdentifier": "c:I",282// MULTIPARAM-NEXT: "spelling": "int"283// MULTIPARAM-NEXT: },284// MULTIPARAM-NEXT: {285// MULTIPARAM-NEXT: "kind": "text",286// MULTIPARAM-NEXT: "spelling": " (^)("287// MULTIPARAM-NEXT: },288// MULTIPARAM-NEXT: {289// MULTIPARAM-NEXT: "kind": "typeIdentifier",290// MULTIPARAM-NEXT: "preciseIdentifier": "c:I",291// MULTIPARAM-NEXT: "spelling": "int"292// MULTIPARAM-NEXT: },293// MULTIPARAM-NEXT: {294// MULTIPARAM-NEXT: "kind": "text",295// MULTIPARAM-NEXT: "spelling": " "296// MULTIPARAM-NEXT: },297// MULTIPARAM-NEXT: {298// MULTIPARAM-NEXT: "kind": "internalParam",299// MULTIPARAM-NEXT: "spelling": "foo"300// MULTIPARAM-NEXT: },301// MULTIPARAM-NEXT: {302// MULTIPARAM-NEXT: "kind": "text",303// MULTIPARAM-NEXT: "spelling": ", "304// MULTIPARAM-NEXT: },305// MULTIPARAM-NEXT: {306// MULTIPARAM-NEXT: "kind": "typeIdentifier",307// MULTIPARAM-NEXT: "preciseIdentifier": "c:i",308// MULTIPARAM-NEXT: "spelling": "unsigned int"309// MULTIPARAM-NEXT: },310// MULTIPARAM-NEXT: {311// MULTIPARAM-NEXT: "kind": "text",312// MULTIPARAM-NEXT: "spelling": " "313// MULTIPARAM-NEXT: },314// MULTIPARAM-NEXT: {315// MULTIPARAM-NEXT: "kind": "internalParam",316// MULTIPARAM-NEXT: "spelling": "baz"317// MULTIPARAM-NEXT: },318// MULTIPARAM-NEXT: {319// MULTIPARAM-NEXT: "kind": "text",320// MULTIPARAM-NEXT: "spelling": ")) "321// MULTIPARAM-NEXT: },322// MULTIPARAM-NEXT: {323// MULTIPARAM-NEXT: "kind": "internalParam",324// MULTIPARAM-NEXT: "spelling": "block"325// MULTIPARAM-NEXT: }326// MULTIPARAM-NEXT: ],327// MULTIPARAM-NEXT: "name": "block"328// MULTIPARAM-NEXT: }329// MULTIPARAM-NEXT: ],330// MULTIPARAM-NEXT: "returns": [331// MULTIPARAM-NEXT: {332// MULTIPARAM-NEXT: "kind": "typeIdentifier",333// MULTIPARAM-NEXT: "preciseIdentifier": "c:v",334// MULTIPARAM-NEXT: "spelling": "void"335// MULTIPARAM-NEXT: }336// MULTIPARAM-NEXT: ]337// MULTIPARAM-NEXT: },338 339// RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix VARIADIC340-(void)methodBlockVariadic:(int (^)(int foo, ...))block;341// VARIADIC-LABEL: "!testLabel": "c:objc(cs)Foo(im)methodBlockVariadic:"342// VARIADIC: "declarationFragments": [343// VARIADIC-NEXT: {344// VARIADIC-NEXT: "kind": "text",345// VARIADIC-NEXT: "spelling": "- ("346// VARIADIC-NEXT: },347// VARIADIC-NEXT: {348// VARIADIC-NEXT: "kind": "typeIdentifier",349// VARIADIC-NEXT: "preciseIdentifier": "c:v",350// VARIADIC-NEXT: "spelling": "void"351// VARIADIC-NEXT: },352// VARIADIC-NEXT: {353// VARIADIC-NEXT: "kind": "text",354// VARIADIC-NEXT: "spelling": ") "355// VARIADIC-NEXT: },356// VARIADIC-NEXT: {357// VARIADIC-NEXT: "kind": "identifier",358// VARIADIC-NEXT: "spelling": "methodBlockVariadic:"359// VARIADIC-NEXT: },360// VARIADIC-NEXT: {361// VARIADIC-NEXT: "kind": "text",362// VARIADIC-NEXT: "spelling": "("363// VARIADIC-NEXT: },364// VARIADIC-NEXT: {365// VARIADIC-NEXT: "kind": "typeIdentifier",366// VARIADIC-NEXT: "preciseIdentifier": "c:I",367// VARIADIC-NEXT: "spelling": "int"368// VARIADIC-NEXT: },369// VARIADIC-NEXT: {370// VARIADIC-NEXT: "kind": "text",371// VARIADIC-NEXT: "spelling": " (^)("372// VARIADIC-NEXT: },373// VARIADIC-NEXT: {374// VARIADIC-NEXT: "kind": "typeIdentifier",375// VARIADIC-NEXT: "preciseIdentifier": "c:I",376// VARIADIC-NEXT: "spelling": "int"377// VARIADIC-NEXT: },378// VARIADIC-NEXT: {379// VARIADIC-NEXT: "kind": "text",380// VARIADIC-NEXT: "spelling": " "381// VARIADIC-NEXT: },382// VARIADIC-NEXT: {383// VARIADIC-NEXT: "kind": "internalParam",384// VARIADIC-NEXT: "spelling": "foo"385// VARIADIC-NEXT: },386// VARIADIC-NEXT: {387// VARIADIC-NEXT: "kind": "text",388// VARIADIC-NEXT: "spelling": ", ...)) "389// VARIADIC-NEXT: },390// VARIADIC-NEXT: {391// VARIADIC-NEXT: "kind": "internalParam",392// VARIADIC-NEXT: "spelling": "block"393// VARIADIC-NEXT: },394// VARIADIC-NEXT: {395// VARIADIC-NEXT: "kind": "text",396// VARIADIC-NEXT: "spelling": ";"397// VARIADIC-NEXT: }398// VARIADIC-NEXT: ],399// VARIADIC: "functionSignature": {400// VARIADIC-NEXT: "parameters": [401// VARIADIC-NEXT: {402// VARIADIC-NEXT: "declarationFragments": [403// VARIADIC-NEXT: {404// VARIADIC-NEXT: "kind": "text",405// VARIADIC-NEXT: "spelling": "("406// VARIADIC-NEXT: },407// VARIADIC-NEXT: {408// VARIADIC-NEXT: "kind": "typeIdentifier",409// VARIADIC-NEXT: "preciseIdentifier": "c:I",410// VARIADIC-NEXT: "spelling": "int"411// VARIADIC-NEXT: },412// VARIADIC-NEXT: {413// VARIADIC-NEXT: "kind": "text",414// VARIADIC-NEXT: "spelling": " (^)("415// VARIADIC-NEXT: },416// VARIADIC-NEXT: {417// VARIADIC-NEXT: "kind": "typeIdentifier",418// VARIADIC-NEXT: "preciseIdentifier": "c:I",419// VARIADIC-NEXT: "spelling": "int"420// VARIADIC-NEXT: },421// VARIADIC-NEXT: {422// VARIADIC-NEXT: "kind": "text",423// VARIADIC-NEXT: "spelling": " "424// VARIADIC-NEXT: },425// VARIADIC-NEXT: {426// VARIADIC-NEXT: "kind": "internalParam",427// VARIADIC-NEXT: "spelling": "foo"428// VARIADIC-NEXT: },429// VARIADIC-NEXT: {430// VARIADIC-NEXT: "kind": "text",431// VARIADIC-NEXT: "spelling": ", ...)) "432// VARIADIC-NEXT: },433// VARIADIC-NEXT: {434// VARIADIC-NEXT: "kind": "internalParam",435// VARIADIC-NEXT: "spelling": "block"436// VARIADIC-NEXT: }437// VARIADIC-NEXT: ],438// VARIADIC-NEXT: "name": "block"439// VARIADIC-NEXT: }440// VARIADIC-NEXT: ],441// VARIADIC-NEXT: "returns": [442// VARIADIC-NEXT: {443// VARIADIC-NEXT: "kind": "typeIdentifier",444// VARIADIC-NEXT: "preciseIdentifier": "c:v",445// VARIADIC-NEXT: "spelling": "void"446// VARIADIC-NEXT: }447// VARIADIC-NEXT: ]448// VARIADIC-NEXT: },449@end450 451// RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix FUNC452void func(int (^arg)(int foo));453// FUNC-LABEL: "!testLabel": "c:@F@func"454// FUNC: "declarationFragments": [455// FUNC-NEXT: {456// FUNC-NEXT: "kind": "typeIdentifier",457// FUNC-NEXT: "preciseIdentifier": "c:v",458// FUNC-NEXT: "spelling": "void"459// FUNC-NEXT: },460// FUNC-NEXT: {461// FUNC-NEXT: "kind": "text",462// FUNC-NEXT: "spelling": " "463// FUNC-NEXT: },464// FUNC-NEXT: {465// FUNC-NEXT: "kind": "identifier",466// FUNC-NEXT: "spelling": "func"467// FUNC-NEXT: },468// FUNC-NEXT: {469// FUNC-NEXT: "kind": "text",470// FUNC-NEXT: "spelling": "("471// FUNC-NEXT: },472// FUNC-NEXT: {473// FUNC-NEXT: "kind": "typeIdentifier",474// FUNC-NEXT: "preciseIdentifier": "c:I",475// FUNC-NEXT: "spelling": "int"476// FUNC-NEXT: },477// FUNC-NEXT: {478// FUNC-NEXT: "kind": "text",479// FUNC-NEXT: "spelling": " (^"480// FUNC-NEXT: },481// FUNC-NEXT: {482// FUNC-NEXT: "kind": "internalParam",483// FUNC-NEXT: "spelling": "arg"484// FUNC-NEXT: },485// FUNC-NEXT: {486// FUNC-NEXT: "kind": "text",487// FUNC-NEXT: "spelling": ")("488// FUNC-NEXT: },489// FUNC-NEXT: {490// FUNC-NEXT: "kind": "typeIdentifier",491// FUNC-NEXT: "preciseIdentifier": "c:I",492// FUNC-NEXT: "spelling": "int"493// FUNC-NEXT: },494// FUNC-NEXT: {495// FUNC-NEXT: "kind": "text",496// FUNC-NEXT: "spelling": " "497// FUNC-NEXT: },498// FUNC-NEXT: {499// FUNC-NEXT: "kind": "internalParam",500// FUNC-NEXT: "spelling": "foo"501// FUNC-NEXT: },502// FUNC-NEXT: {503// FUNC-NEXT: "kind": "text",504// FUNC-NEXT: "spelling": "));"505// FUNC-NEXT: }506// FUNC-NEXT: ],507// FUNC: "functionSignature": {508// FUNC-NEXT: "parameters": [509// FUNC-NEXT: {510// FUNC-NEXT: "declarationFragments": [511// FUNC-NEXT: {512// FUNC-NEXT: "kind": "typeIdentifier",513// FUNC-NEXT: "preciseIdentifier": "c:I",514// FUNC-NEXT: "spelling": "int"515// FUNC-NEXT: },516// FUNC-NEXT: {517// FUNC-NEXT: "kind": "text",518// FUNC-NEXT: "spelling": " (^"519// FUNC-NEXT: },520// FUNC-NEXT: {521// FUNC-NEXT: "kind": "internalParam",522// FUNC-NEXT: "spelling": "arg"523// FUNC-NEXT: },524// FUNC-NEXT: {525// FUNC-NEXT: "kind": "text",526// FUNC-NEXT: "spelling": ")("527// FUNC-NEXT: },528// FUNC-NEXT: {529// FUNC-NEXT: "kind": "typeIdentifier",530// FUNC-NEXT: "preciseIdentifier": "c:I",531// FUNC-NEXT: "spelling": "int"532// FUNC-NEXT: },533// FUNC-NEXT: {534// FUNC-NEXT: "kind": "text",535// FUNC-NEXT: "spelling": " "536// FUNC-NEXT: },537// FUNC-NEXT: {538// FUNC-NEXT: "kind": "internalParam",539// FUNC-NEXT: "spelling": "foo"540// FUNC-NEXT: },541// FUNC-NEXT: {542// FUNC-NEXT: "kind": "text",543// FUNC-NEXT: "spelling": ")"544// FUNC-NEXT: }545// FUNC-NEXT: ],546// FUNC-NEXT: "name": "arg"547// FUNC-NEXT: }548// FUNC-NEXT: ],549// FUNC-NEXT: "returns": [550// FUNC-NEXT: {551// FUNC-NEXT: "kind": "typeIdentifier",552// FUNC-NEXT: "preciseIdentifier": "c:v",553// FUNC-NEXT: "spelling": "void"554// FUNC-NEXT: }555// FUNC-NEXT: ]556// FUNC-NEXT: },557 558// RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix GLOBAL559int (^global)(int foo);560// GLOBAL-LABEL: "!testLabel": "c:@global"561// GLOBAL: "declarationFragments": [562// GLOBAL-NEXT: {563// GLOBAL-NEXT: "kind": "typeIdentifier",564// GLOBAL-NEXT: "preciseIdentifier": "c:I",565// GLOBAL-NEXT: "spelling": "int"566// GLOBAL-NEXT: },567// GLOBAL-NEXT: {568// GLOBAL-NEXT: "kind": "text",569// GLOBAL-NEXT: "spelling": " (^"570// GLOBAL-NEXT: },571// GLOBAL-NEXT: {572// GLOBAL-NEXT: "kind": "identifier",573// GLOBAL-NEXT: "spelling": "global"574// GLOBAL-NEXT: },575// GLOBAL-NEXT: {576// GLOBAL-NEXT: "kind": "text",577// GLOBAL-NEXT: "spelling": ")("578// GLOBAL-NEXT: },579// GLOBAL-NEXT: {580// GLOBAL-NEXT: "kind": "typeIdentifier",581// GLOBAL-NEXT: "preciseIdentifier": "c:I",582// GLOBAL-NEXT: "spelling": "int"583// GLOBAL-NEXT: },584// GLOBAL-NEXT: {585// GLOBAL-NEXT: "kind": "text",586// GLOBAL-NEXT: "spelling": " "587// GLOBAL-NEXT: },588// GLOBAL-NEXT: {589// GLOBAL-NEXT: "kind": "internalParam",590// GLOBAL-NEXT: "spelling": "foo"591// GLOBAL-NEXT: },592// GLOBAL-NEXT: {593// GLOBAL-NEXT: "kind": "text",594// GLOBAL-NEXT: "spelling": ");"595// GLOBAL-NEXT: }596// GLOBAL-NEXT: ],597 598///expected-no-diagnostics599