|  | // RUN: rm -rf %t | 
|  | // RUN: %clang_cc1 -extract-api --pretty-sgf --emit-sgf-symbol-labels-for-testing \ | 
|  | // RUN:   -triple arm64-apple-macosx -x objective-c-header %s -o %t/output.symbols.json -verify | 
|  |  | 
|  | // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix MYINT | 
|  | typedef int MyInt; | 
|  | // MYINT-LABEL: "!testLabel": "c:typedef.c@T@MyInt" | 
|  | // MYINT: "accessLevel": "public", | 
|  | // MYINT:      "declarationFragments": [ | 
|  | // MYINT-NEXT:   { | 
|  | // MYINT-NEXT:     "kind": "keyword", | 
|  | // MYINT-NEXT:     "spelling": "typedef" | 
|  | // MYINT-NEXT:   }, | 
|  | // MYINT-NEXT:   { | 
|  | // MYINT-NEXT:     "kind": "text", | 
|  | // MYINT-NEXT:     "spelling": " " | 
|  | // MYINT-NEXT:   }, | 
|  | // MYINT-NEXT:   { | 
|  | // MYINT-NEXT:     "kind": "typeIdentifier", | 
|  | // MYINT-NEXT:     "preciseIdentifier": "c:I", | 
|  | // MYINT-NEXT:     "spelling": "int" | 
|  | // MYINT-NEXT:   }, | 
|  | // MYINT-NEXT:   { | 
|  | // MYINT-NEXT:     "kind": "text", | 
|  | // MYINT-NEXT:     "spelling": " " | 
|  | // MYINT-NEXT:   }, | 
|  | // MYINT-NEXT:   { | 
|  | // MYINT-NEXT:     "kind": "identifier", | 
|  | // MYINT-NEXT:     "spelling": "MyInt" | 
|  | // MYINT-NEXT:   }, | 
|  | // MYINT-NEXT:   { | 
|  | // MYINT-NEXT:     "kind": "text", | 
|  | // MYINT-NEXT:     "spelling": ";" | 
|  | // MYINT-NEXT:   } | 
|  | // MYINT-NEXT: ], | 
|  | // MYINT:      "kind": { | 
|  | // MYINT-NEXT:   "displayName": "Type Alias", | 
|  | // MYINT-NEXT:   "identifier": "objective-c.typealias" | 
|  | // MYINT-NEXT: }, | 
|  | // MYINT: "title": "MyInt" | 
|  | // MYINT:      "pathComponents": [ | 
|  | // MYINT-NEXT:   "MyInt" | 
|  | // MYINT-NEXT: ], | 
|  | // MYINT: "type": "c:I" | 
|  |  | 
|  | // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix BARPTR | 
|  | typedef struct Bar *BarPtr; | 
|  | // BARPTR-LABEL: "!testLabel": "c:typedef.c@T@BarPtr" | 
|  | // BARPTR: "accessLevel": "public", | 
|  | // BARPTR:      "declarationFragments": [ | 
|  | // BARPTR-NEXT:   { | 
|  | // BARPTR-NEXT:     "kind": "keyword", | 
|  | // BARPTR-NEXT:     "spelling": "typedef" | 
|  | // BARPTR-NEXT:   }, | 
|  | // BARPTR-NEXT:   { | 
|  | // BARPTR-NEXT:     "kind": "text", | 
|  | // BARPTR-NEXT:     "spelling": " " | 
|  | // BARPTR-NEXT:   }, | 
|  | // BARPTR-NEXT:   { | 
|  | // BARPTR-NEXT:     "kind": "keyword", | 
|  | // BARPTR-NEXT:     "spelling": "struct" | 
|  | // BARPTR-NEXT:   }, | 
|  | // BARPTR-NEXT:   { | 
|  | // BARPTR-NEXT:     "kind": "text", | 
|  | // BARPTR-NEXT:     "spelling": " " | 
|  | // BARPTR-NEXT:   }, | 
|  | // BARPTR-NEXT:   { | 
|  | // BARPTR-NEXT:     "kind": "typeIdentifier", | 
|  | // BARPTR-NEXT:     "preciseIdentifier": "c:@S@Bar", | 
|  | // BARPTR-NEXT:     "spelling": "Bar" | 
|  | // BARPTR-NEXT:   }, | 
|  | // BARPTR-NEXT:   { | 
|  | // BARPTR-NEXT:     "kind": "text", | 
|  | // BARPTR-NEXT:     "spelling": " * " | 
|  | // BARPTR-NEXT:   }, | 
|  | // BARPTR-NEXT:   { | 
|  | // BARPTR-NEXT:     "kind": "identifier", | 
|  | // BARPTR-NEXT:     "spelling": "BarPtr" | 
|  | // BARPTR-NEXT:   }, | 
|  | // BARPTR-NEXT:   { | 
|  | // BARPTR-NEXT:     "kind": "text", | 
|  | // BARPTR-NEXT:     "spelling": ";" | 
|  | // BARPTR-NEXT:   } | 
|  | // BARPTR-NEXT: ], | 
|  | // BARPTR: "type": "c:*$@S@Bar" | 
|  |  | 
|  | // RUN: FileCheck %s --input-file %t/output.symbols.json | 
|  | void foo(BarPtr value); | 
|  |  | 
|  | void baz(BarPtr *value); | 
|  | // CHECK-NOT: struct Bar * | 
|  |  | 
|  | // expected-no-diagnostics |