|
1 | 1 | // RUN: rm -rf %t |
2 | | -// RUN: %clang_cc1 -extract-api --pretty-sgf --emit-sgf-symbol-labels-for-testing \ |
| 2 | +// RUN: %clang_cc1 -extract-api --pretty-sgf --emit-sgf-symbol-labels-for-testing -fblocks \ |
3 | 3 | // RUN: -triple arm64-apple-macosx -x objective-c-header %s -o %t/output.symbols.json -verify |
4 | 4 |
|
5 | 5 | // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix MYINT |
@@ -90,4 +90,83 @@ void foo(BarPtr value); |
90 | 90 | void baz(BarPtr *value); |
91 | 91 | // CHECK-NOT: struct Bar * |
92 | 92 |
|
| 93 | +// RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix BLOCKPTR |
| 94 | +typedef int (^CustomType)(const unsigned int *, unsigned long); |
| 95 | +void bar(CustomType block); |
| 96 | + |
| 97 | +// BLOCKPTR-LABEL: "!testLabel": "c:@F@bar", |
| 98 | +// BLOCKPTR: "declarationFragments": [ |
| 99 | +// BLOCKPTR-NEXT: { |
| 100 | +// BLOCKPTR-NEXT: "kind": "typeIdentifier", |
| 101 | +// BLOCKPTR-NEXT: "preciseIdentifier": "c:v", |
| 102 | +// BLOCKPTR-NEXT: "spelling": "void" |
| 103 | +// BLOCKPTR-NEXT: }, |
| 104 | +// BLOCKPTR-NEXT: { |
| 105 | +// BLOCKPTR-NEXT: "kind": "text", |
| 106 | +// BLOCKPTR-NEXT: "spelling": " " |
| 107 | +// BLOCKPTR-NEXT: }, |
| 108 | +// BLOCKPTR-NEXT: { |
| 109 | +// BLOCKPTR-NEXT: "kind": "identifier", |
| 110 | +// BLOCKPTR-NEXT: "spelling": "bar" |
| 111 | +// BLOCKPTR-NEXT: }, |
| 112 | +// BLOCKPTR-NEXT: { |
| 113 | +// BLOCKPTR-NEXT: "kind": "text", |
| 114 | +// BLOCKPTR-NEXT: "spelling": "(" |
| 115 | +// BLOCKPTR-NEXT: }, |
| 116 | +// BLOCKPTR-NEXT: { |
| 117 | +// BLOCKPTR-NEXT: "kind": "typeIdentifier", |
| 118 | +// BLOCKPTR-NEXT: "preciseIdentifier": "c:typedef.c@T@CustomType", |
| 119 | +// BLOCKPTR-NEXT: "spelling": "CustomType" |
| 120 | +// BLOCKPTR-NEXT: }, |
| 121 | +// BLOCKPTR-NEXT: { |
| 122 | +// BLOCKPTR-NEXT: "kind": "text", |
| 123 | +// BLOCKPTR-NEXT: "spelling": " " |
| 124 | +// BLOCKPTR-NEXT: }, |
| 125 | +// BLOCKPTR-NEXT: { |
| 126 | +// BLOCKPTR-NEXT: "kind": "internalParam", |
| 127 | +// BLOCKPTR-NEXT: "spelling": "block" |
| 128 | +// BLOCKPTR-NEXT: }, |
| 129 | +// BLOCKPTR-NEXT: { |
| 130 | +// BLOCKPTR-NEXT: "kind": "text", |
| 131 | +// BLOCKPTR-NEXT: "spelling": ");" |
| 132 | +// BLOCKPTR-NEXT: } |
| 133 | +// BLOCKPTR-NEXT: ], |
| 134 | +// BLOCKPTR-NEXT: "functionSignature": { |
| 135 | +// BLOCKPTR-NEXT: "parameters": [ |
| 136 | +// BLOCKPTR-NEXT: { |
| 137 | +// BLOCKPTR-NEXT: "declarationFragments": [ |
| 138 | +// BLOCKPTR-NEXT: { |
| 139 | +// BLOCKPTR-NEXT: "kind": "typeIdentifier", |
| 140 | +// BLOCKPTR-NEXT: "preciseIdentifier": "c:typedef.c@T@CustomType", |
| 141 | +// BLOCKPTR-NEXT: "spelling": "CustomType" |
| 142 | +// BLOCKPTR-NEXT: }, |
| 143 | +// BLOCKPTR-NEXT: { |
| 144 | +// BLOCKPTR-NEXT: "kind": "text", |
| 145 | +// BLOCKPTR-NEXT: "spelling": " " |
| 146 | +// BLOCKPTR-NEXT: }, |
| 147 | +// BLOCKPTR-NEXT: { |
| 148 | +// BLOCKPTR-NEXT: "kind": "internalParam", |
| 149 | +// BLOCKPTR-NEXT: "spelling": "block" |
| 150 | +// BLOCKPTR-NEXT: } |
| 151 | +// BLOCKPTR-NEXT: ], |
| 152 | +// BLOCKPTR-NEXT: "name": "block" |
| 153 | +// BLOCKPTR-NEXT: } |
| 154 | +// BLOCKPTR-NEXT: ], |
| 155 | +// BLOCKPTR-NEXT: "returns": [ |
| 156 | +// BLOCKPTR-NEXT: { |
| 157 | +// BLOCKPTR-NEXT: "kind": "typeIdentifier", |
| 158 | +// BLOCKPTR-NEXT: "preciseIdentifier": "c:v", |
| 159 | +// BLOCKPTR-NEXT: "spelling": "void" |
| 160 | +// BLOCKPTR-NEXT: } |
| 161 | +// BLOCKPTR-NEXT: ] |
| 162 | +// BLOCKPTR-NEXT: }, |
| 163 | +// BLOCKPTR: "identifier": { |
| 164 | +// BLOCKPTR-NEXT: "interfaceLanguage": "objective-c", |
| 165 | +// BLOCKPTR-NEXT: "precise": "c:@F@bar" |
| 166 | +// BLOCKPTR-NEXT: }, |
| 167 | +// BLOCKPTR: "kind": { |
| 168 | +// BLOCKPTR-NEXT: "displayName": "Function", |
| 169 | +// BLOCKPTR-NEXT: "identifier": "objective-c.func" |
| 170 | +// BLOCKPTR-NEXT: }, |
| 171 | + |
93 | 172 | // expected-no-diagnostics |
0 commit comments