
Reenables b31414bf4f9898f7817a9fcf8a91f62ec26f3eaf. Also adds a new warning for missing `--symbol-graph-dir` arg when `--emit-extension-symbol-graphs` is provided. This also reverts the commit that removed.
361 lines
11 KiB
Objective-C
361 lines
11 KiB
Objective-C
// RUN: rm -rf %t
|
|
// RUN: %clang_cc1 -extract-api --pretty-sgf --emit-sgf-symbol-labels-for-testing \
|
|
// RUN: -x objective-c-header -triple arm64-apple-macosx %s -o %t/output.symbols.json -verify
|
|
|
|
@protocol Protocol
|
|
@end
|
|
|
|
// RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix SUPER
|
|
@interface Super <Protocol>
|
|
// SUPER: "!testRelLabel": "conformsTo $ c:objc(cs)Super $ c:objc(pl)Protocol"
|
|
// SUPER-LABEL: "!testLabel": "c:objc(cs)Super"
|
|
// SUPER: "accessLevel": "public",
|
|
// SUPER: "declarationFragments": [
|
|
// SUPER-NEXT: {
|
|
// SUPER-NEXT: "kind": "keyword",
|
|
// SUPER-NEXT: "spelling": "@interface"
|
|
// SUPER-NEXT: },
|
|
// SUPER-NEXT: {
|
|
// SUPER-NEXT: "kind": "text",
|
|
// SUPER-NEXT: "spelling": " "
|
|
// SUPER-NEXT: },
|
|
// SUPER-NEXT: {
|
|
// SUPER-NEXT: "kind": "identifier",
|
|
// SUPER-NEXT: "spelling": "Super"
|
|
// SUPER-NEXT: }
|
|
// SUPER-NEXT: ],
|
|
// SUPER: "kind": {
|
|
// SUPER-NEXT: "displayName": "Class",
|
|
// SUPER-NEXT: "identifier": "objective-c.class"
|
|
// SUPER-NEXT: },
|
|
// SUPER: "title": "Super"
|
|
// SUPER: "pathComponents": [
|
|
// SUPER-NEXT: "Super"
|
|
// SUPER-NEXT: ]
|
|
|
|
// RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix PROP
|
|
@property(readonly, getter=getProperty) unsigned Property;
|
|
// PROP: "!testRelLabel": "memberOf $ c:objc(cs)Super(py)Property $ c:objc(cs)Super"
|
|
// PROP: "!testLabel": "c:objc(cs)Super(py)Property"
|
|
// PROP: "accessLevel": "public",
|
|
// PROP: "declarationFragments": [
|
|
// PROP-NEXT: {
|
|
// PROP-NEXT: "kind": "keyword",
|
|
// PROP-NEXT: "spelling": "@property"
|
|
// PROP-NEXT: },
|
|
// PROP-NEXT: {
|
|
// PROP-NEXT: "kind": "text",
|
|
// PROP-NEXT: "spelling": " ("
|
|
// PROP-NEXT: },
|
|
// PROP-NEXT: {
|
|
// PROP-NEXT: "kind": "keyword",
|
|
// PROP-NEXT: "spelling": "readonly"
|
|
// PROP-NEXT: },
|
|
// PROP-NEXT: {
|
|
// PROP-NEXT: "kind": "text",
|
|
// PROP-NEXT: "spelling": ", "
|
|
// PROP-NEXT: },
|
|
// PROP-NEXT: {
|
|
// PROP-NEXT: "kind": "keyword",
|
|
// PROP-NEXT: "spelling": "getter"
|
|
// PROP-NEXT: },
|
|
// PROP-NEXT: {
|
|
// PROP-NEXT: "kind": "text",
|
|
// PROP-NEXT: "spelling": "="
|
|
// PROP-NEXT: },
|
|
// PROP-NEXT: {
|
|
// PROP-NEXT: "kind": "identifier",
|
|
// PROP-NEXT: "spelling": "getProperty"
|
|
// PROP-NEXT: },
|
|
// PROP-NEXT: {
|
|
// PROP-NEXT: "kind": "text",
|
|
// PROP-NEXT: "spelling": ") "
|
|
// PROP-NEXT: },
|
|
// PROP-NEXT: {
|
|
// PROP-NEXT: "kind": "typeIdentifier",
|
|
// PROP-NEXT: "preciseIdentifier": "c:i",
|
|
// PROP-NEXT: "spelling": "unsigned int"
|
|
// PROP-NEXT: },
|
|
// PROP-NEXT: {
|
|
// PROP-NEXT: "kind": "text",
|
|
// PROP-NEXT: "spelling": " "
|
|
// PROP-NEXT: },
|
|
// PROP-NEXT: {
|
|
// PROP-NEXT: "kind": "identifier",
|
|
// PROP-NEXT: "spelling": "Property"
|
|
// PROP-NEXT: },
|
|
// PROP-NEXT: {
|
|
// PROP-NEXT: "kind": "text",
|
|
// PROP-NEXT: "spelling": ";"
|
|
// PROP-NEXT: }
|
|
// PROP-NEXT: ],
|
|
// PROP: "kind": {
|
|
// PROP-NEXT: "displayName": "Instance Property",
|
|
// PROP-NEXT: "identifier": "objective-c.property"
|
|
// PROP-NEXT: },
|
|
// PROP: "title": "Property"
|
|
// PROP: "pathComponents": [
|
|
// PROP-NEXT: "Super",
|
|
// PROP-NEXT: "Property"
|
|
// PROP-NEXT: ]
|
|
|
|
// RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix GET
|
|
+ (id)getWithProperty:(unsigned) Property;
|
|
// GET: "!testRelLabel": "memberOf $ c:objc(cs)Super(cm)getWithProperty: $ c:objc(cs)Super"
|
|
// GET-LABEL: "!testLabel": "c:objc(cs)Super(cm)getWithProperty:"
|
|
// GET: "accessLevel": "public",
|
|
// GET: "declarationFragments": [
|
|
// GET-NEXT: {
|
|
// GET-NEXT: "kind": "text",
|
|
// GET-NEXT: "spelling": "+ ("
|
|
// GET-NEXT: },
|
|
// GET-NEXT: {
|
|
// GET-NEXT: "kind": "keyword",
|
|
// GET-NEXT: "spelling": "id"
|
|
// GET-NEXT: },
|
|
// GET-NEXT: {
|
|
// GET-NEXT: "kind": "text",
|
|
// GET-NEXT: "spelling": ") "
|
|
// GET-NEXT: },
|
|
// GET-NEXT: {
|
|
// GET-NEXT: "kind": "identifier",
|
|
// GET-NEXT: "spelling": "getWithProperty:"
|
|
// GET-NEXT: },
|
|
// GET-NEXT: {
|
|
// GET-NEXT: "kind": "text",
|
|
// GET-NEXT: "spelling": "("
|
|
// GET-NEXT: },
|
|
// GET-NEXT: {
|
|
// GET-NEXT: "kind": "typeIdentifier",
|
|
// GET-NEXT: "preciseIdentifier": "c:i",
|
|
// GET-NEXT: "spelling": "unsigned int"
|
|
// GET-NEXT: },
|
|
// GET-NEXT: {
|
|
// GET-NEXT: "kind": "text",
|
|
// GET-NEXT: "spelling": ") "
|
|
// GET-NEXT: },
|
|
// GET-NEXT: {
|
|
// GET-NEXT: "kind": "internalParam",
|
|
// GET-NEXT: "spelling": "Property"
|
|
// GET-NEXT: },
|
|
// GET-NEXT: {
|
|
// GET-NEXT: "kind": "text",
|
|
// GET-NEXT: "spelling": ";"
|
|
// GET-NEXT: }
|
|
// GET-NEXT: ],
|
|
// GET: "functionSignature": {
|
|
// GET-NEXT: "parameters": [
|
|
// GET-NEXT: {
|
|
// GET-NEXT: "declarationFragments": [
|
|
// GET-NEXT: {
|
|
// GET-NEXT: "kind": "text",
|
|
// GET-NEXT: "spelling": "("
|
|
// GET-NEXT: },
|
|
// GET-NEXT: {
|
|
// GET-NEXT: "kind": "typeIdentifier",
|
|
// GET-NEXT: "preciseIdentifier": "c:i",
|
|
// GET-NEXT: "spelling": "unsigned int"
|
|
// GET-NEXT: },
|
|
// GET-NEXT: {
|
|
// GET-NEXT: "kind": "text",
|
|
// GET-NEXT: "spelling": ") "
|
|
// GET-NEXT: },
|
|
// GET-NEXT: {
|
|
// GET-NEXT: "kind": "internalParam",
|
|
// GET-NEXT: "spelling": "Property"
|
|
// GET-NEXT: }
|
|
// GET-NEXT: ],
|
|
// GET-NEXT: "name": "Property"
|
|
// GET-NEXT: }
|
|
// GET-NEXT: ],
|
|
// GET-NEXT: "returns": [
|
|
// GET-NEXT: {
|
|
// GET-NEXT: "kind": "keyword",
|
|
// GET-NEXT: "spelling": "id"
|
|
// GET-NEXT: }
|
|
// GET-NEXT: ]
|
|
// GET-NEXT: },
|
|
// GET: "kind": {
|
|
// GET-NEXT: "displayName": "Type Method",
|
|
// GET-NEXT: "identifier": "objective-c.type.method"
|
|
// GET-NEXT: },
|
|
// GET: "title": "getWithProperty:"
|
|
// GET: "pathComponents": [
|
|
// GET-NEXT: "Super",
|
|
// GET-NEXT: "getWithProperty:"
|
|
// GET-NEXT: ]
|
|
|
|
// RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix SET
|
|
- (void)setProperty:(unsigned) Property andOtherThing: (unsigned) Thing;
|
|
// SET: "!testRelLabel": "memberOf $ c:objc(cs)Super(im)setProperty:andOtherThing: $ c:objc(cs)Super"
|
|
// SET-LABEL: "!testLabel": "c:objc(cs)Super(im)setProperty:andOtherThing:"
|
|
// SET: "accessLevel": "public",
|
|
// SET: "declarationFragments": [
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "text",
|
|
// SET-NEXT: "spelling": "- ("
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "typeIdentifier",
|
|
// SET-NEXT: "preciseIdentifier": "c:v",
|
|
// SET-NEXT: "spelling": "void"
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "text",
|
|
// SET-NEXT: "spelling": ") "
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "identifier",
|
|
// SET-NEXT: "spelling": "setProperty:"
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "text",
|
|
// SET-NEXT: "spelling": "("
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "typeIdentifier",
|
|
// SET-NEXT: "preciseIdentifier": "c:i",
|
|
// SET-NEXT: "spelling": "unsigned int"
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "text",
|
|
// SET-NEXT: "spelling": ") "
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "internalParam",
|
|
// SET-NEXT: "spelling": "Property"
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "text",
|
|
// SET-NEXT: "spelling": " "
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "identifier",
|
|
// SET-NEXT: "spelling": "andOtherThing:"
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "text",
|
|
// SET-NEXT: "spelling": "("
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "typeIdentifier",
|
|
// SET-NEXT: "preciseIdentifier": "c:i",
|
|
// SET-NEXT: "spelling": "unsigned int"
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "text",
|
|
// SET-NEXT: "spelling": ") "
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "internalParam",
|
|
// SET-NEXT: "spelling": "Thing"
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "text",
|
|
// SET-NEXT: "spelling": ";"
|
|
// SET-NEXT: }
|
|
// SET-NEXT: ],
|
|
// SET: "functionSignature": {
|
|
// SET-NEXT: "parameters": [
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "declarationFragments": [
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "text",
|
|
// SET-NEXT: "spelling": "("
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "typeIdentifier",
|
|
// SET-NEXT: "preciseIdentifier": "c:i",
|
|
// SET-NEXT: "spelling": "unsigned int"
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "text",
|
|
// SET-NEXT: "spelling": ") "
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "internalParam",
|
|
// SET-NEXT: "spelling": "Property"
|
|
// SET-NEXT: }
|
|
// SET-NEXT: ],
|
|
// SET-NEXT: "name": "Property"
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "declarationFragments": [
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "text",
|
|
// SET-NEXT: "spelling": "("
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "typeIdentifier",
|
|
// SET-NEXT: "preciseIdentifier": "c:i",
|
|
// SET-NEXT: "spelling": "unsigned int"
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "text",
|
|
// SET-NEXT: "spelling": ") "
|
|
// SET-NEXT: },
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "internalParam",
|
|
// SET-NEXT: "spelling": "Thing"
|
|
// SET-NEXT: }
|
|
// SET-NEXT: ],
|
|
// SET-NEXT: "name": "Thing"
|
|
// SET-NEXT: }
|
|
// SET-NEXT: ],
|
|
// SET-NEXT: "returns": [
|
|
// SET-NEXT: {
|
|
// SET-NEXT: "kind": "typeIdentifier",
|
|
// SET-NEXT: "preciseIdentifier": "c:v",
|
|
// SET-NEXT: "spelling": "void"
|
|
// SET-NEXT: }
|
|
// SET-NEXT: ]
|
|
// SET-NEXT: },
|
|
// SET: "kind": {
|
|
// SET-NEXT: "displayName": "Instance Method",
|
|
// SET-NEXT: "identifier": "objective-c.method"
|
|
// SET-NEXT: },
|
|
// SET: "title": "setProperty:andOtherThing:"
|
|
@end
|
|
|
|
// RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix DERIVED
|
|
@interface Derived : Super {
|
|
// DERIVED: "!testRelLabel": "inheritsFrom $ c:objc(cs)Derived $ c:objc(cs)Super"
|
|
|
|
// RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix IVAR
|
|
char Ivar;
|
|
// IVAR: "!testRelLabel": "memberOf $ c:objc(cs)Derived@Ivar $ c:objc(cs)Derived"
|
|
// IVAR-LABEL: "!testLabel": "c:objc(cs)Derived@Ivar"
|
|
// IVAR: "accessLevel": "public",
|
|
// IVAR: "declarationFragments": [
|
|
// IVAR-NEXT: {
|
|
// IVAR-NEXT: "kind": "typeIdentifier",
|
|
// IVAR-NEXT: "preciseIdentifier": "c:C",
|
|
// IVAR-NEXT: "spelling": "char"
|
|
// IVAR-NEXT: },
|
|
// IVAR-NEXT: {
|
|
// IVAR-NEXT: "kind": "text",
|
|
// IVAR-NEXT: "spelling": " "
|
|
// IVAR-NEXT: },
|
|
// IVAR-NEXT: {
|
|
// IVAR-NEXT: "kind": "identifier",
|
|
// IVAR-NEXT: "spelling": "Ivar"
|
|
// IVAR-NEXT: },
|
|
// IVAR-NEXT: {
|
|
// IVAR-NEXT: "kind": "text",
|
|
// IVAR-NEXT: "spelling": ";"
|
|
// IVAR-NEXT: }
|
|
// IVAR-NEXT: ],
|
|
// IVAR: "kind": {
|
|
// IVAR-NEXT: "displayName": "Instance Variable",
|
|
// IVAR-NEXT: "identifier": "objective-c.ivar"
|
|
// IVAR-NEXT: },
|
|
// IVAR: "title": "Ivar"
|
|
// IVAR: "pathComponents": [
|
|
// IVAR-NEXT: "Derived",
|
|
// IVAR-NEXT: "Ivar"
|
|
// IVAR-NEXT: ]
|
|
}
|
|
@end
|
|
|
|
// expected-no-diagnostics
|