1d1d34bafSZixu Wang// RUN: rm -rf %t 2d1d34bafSZixu Wang// RUN: split-file %s %t 3*e08c4354SZixu Wang// RUN: sed -e "s@INPUT_DIR@%{/t:regex_replacement}@g" \ 4*e08c4354SZixu Wang// RUN: %t/reference.output.json.in >> %t/reference.output.json 5d1d34bafSZixu Wang// RUN: %clang -extract-api -x objective-c-header -target arm64-apple-macosx \ 6d1d34bafSZixu Wang// RUN: %t/input.h -o %t/output.json | FileCheck -allow-empty %s 7d1d34bafSZixu Wang 8d1d34bafSZixu Wang// Generator version is not consistent across test runs, normalize it. 9d1d34bafSZixu Wang// RUN: sed -e "s@\"generator\": \".*\"@\"generator\": \"?\"@g" \ 10d1d34bafSZixu Wang// RUN: %t/output.json >> %t/output-normalized.json 11d1d34bafSZixu Wang// RUN: diff %t/reference.output.json %t/output-normalized.json 12d1d34bafSZixu Wang 13d1d34bafSZixu Wang// CHECK-NOT: error: 14d1d34bafSZixu Wang// CHECK-NOT: warning: 15d1d34bafSZixu Wang 16d1d34bafSZixu Wang//--- input.h 17d1d34bafSZixu Wang@protocol Protocol 18d1d34bafSZixu Wang@end 19d1d34bafSZixu Wang 20d1d34bafSZixu Wang@protocol AnotherProtocol <Protocol> 21d1d34bafSZixu Wang@end 22d1d34bafSZixu Wang 23d1d34bafSZixu Wang//--- reference.output.json.in 24d1d34bafSZixu Wang{ 25d1d34bafSZixu Wang "metadata": { 26d1d34bafSZixu Wang "formatVersion": { 27d1d34bafSZixu Wang "major": 0, 28d1d34bafSZixu Wang "minor": 5, 29d1d34bafSZixu Wang "patch": 3 30d1d34bafSZixu Wang }, 31d1d34bafSZixu Wang "generator": "?" 32d1d34bafSZixu Wang }, 33d1d34bafSZixu Wang "module": { 34d1d34bafSZixu Wang "name": "", 35d1d34bafSZixu Wang "platform": { 36d1d34bafSZixu Wang "architecture": "arm64", 37d1d34bafSZixu Wang "operatingSystem": { 38d1d34bafSZixu Wang "minimumVersion": { 39d1d34bafSZixu Wang "major": 11, 40d1d34bafSZixu Wang "minor": 0, 41d1d34bafSZixu Wang "patch": 0 42d1d34bafSZixu Wang }, 43d1d34bafSZixu Wang "name": "macosx" 44d1d34bafSZixu Wang }, 45d1d34bafSZixu Wang "vendor": "apple" 46d1d34bafSZixu Wang } 47d1d34bafSZixu Wang }, 4828d79314SDaniel Grumberg "relationships": [ 49d1d34bafSZixu Wang { 50d1d34bafSZixu Wang "kind": "conformsTo", 51d1d34bafSZixu Wang "source": "c:objc(pl)AnotherProtocol", 52d1d34bafSZixu Wang "target": "c:objc(pl)Protocol" 53d1d34bafSZixu Wang } 54d1d34bafSZixu Wang ], 55d1d34bafSZixu Wang "symbols": [ 56d1d34bafSZixu Wang { 5728d79314SDaniel Grumberg "accessLevel": "public", 58d1d34bafSZixu Wang "declarationFragments": [ 59d1d34bafSZixu Wang { 60d1d34bafSZixu Wang "kind": "keyword", 61d1d34bafSZixu Wang "spelling": "@protocol" 62d1d34bafSZixu Wang }, 63d1d34bafSZixu Wang { 64d1d34bafSZixu Wang "kind": "text", 65d1d34bafSZixu Wang "spelling": " " 66d1d34bafSZixu Wang }, 67d1d34bafSZixu Wang { 68d1d34bafSZixu Wang "kind": "identifier", 69d1d34bafSZixu Wang "spelling": "Protocol" 70d1d34bafSZixu Wang } 71d1d34bafSZixu Wang ], 72d1d34bafSZixu Wang "identifier": { 73d1d34bafSZixu Wang "interfaceLanguage": "objective-c", 74d1d34bafSZixu Wang "precise": "c:objc(pl)Protocol" 75d1d34bafSZixu Wang }, 76d1d34bafSZixu Wang "kind": { 77d1d34bafSZixu Wang "displayName": "Protocol", 78d1d34bafSZixu Wang "identifier": "objective-c.protocol" 79d1d34bafSZixu Wang }, 80d1d34bafSZixu Wang "location": { 8128d79314SDaniel Grumberg "position": { 82d1d34bafSZixu Wang "character": 11, 8328d79314SDaniel Grumberg "line": 1 8428d79314SDaniel Grumberg }, 85d1d34bafSZixu Wang "uri": "file://INPUT_DIR/input.h" 86d1d34bafSZixu Wang }, 87d1d34bafSZixu Wang "names": { 8880ae3665SDaniel Grumberg "navigator": [ 8980ae3665SDaniel Grumberg { 9080ae3665SDaniel Grumberg "kind": "identifier", 9180ae3665SDaniel Grumberg "spelling": "Protocol" 9280ae3665SDaniel Grumberg } 9380ae3665SDaniel Grumberg ], 94d1d34bafSZixu Wang "subHeading": [ 95d1d34bafSZixu Wang { 96d1d34bafSZixu Wang "kind": "identifier", 97d1d34bafSZixu Wang "spelling": "Protocol" 98d1d34bafSZixu Wang } 99d1d34bafSZixu Wang ], 100d1d34bafSZixu Wang "title": "Protocol" 10128d79314SDaniel Grumberg }, 10228d79314SDaniel Grumberg "pathComponents": [ 10328d79314SDaniel Grumberg "Protocol" 10428d79314SDaniel Grumberg ] 105d1d34bafSZixu Wang }, 106d1d34bafSZixu Wang { 10728d79314SDaniel Grumberg "accessLevel": "public", 108d1d34bafSZixu Wang "declarationFragments": [ 109d1d34bafSZixu Wang { 110d1d34bafSZixu Wang "kind": "keyword", 111d1d34bafSZixu Wang "spelling": "@protocol" 112d1d34bafSZixu Wang }, 113d1d34bafSZixu Wang { 114d1d34bafSZixu Wang "kind": "text", 115d1d34bafSZixu Wang "spelling": " " 116d1d34bafSZixu Wang }, 117d1d34bafSZixu Wang { 118d1d34bafSZixu Wang "kind": "identifier", 119d1d34bafSZixu Wang "spelling": "AnotherProtocol" 120d1d34bafSZixu Wang }, 121d1d34bafSZixu Wang { 122d1d34bafSZixu Wang "kind": "text", 123d1d34bafSZixu Wang "spelling": " <" 124d1d34bafSZixu Wang }, 125d1d34bafSZixu Wang { 126d1d34bafSZixu Wang "kind": "typeIdentifier", 127d1d34bafSZixu Wang "preciseIdentifier": "c:objc(pl)Protocol", 128d1d34bafSZixu Wang "spelling": "Protocol" 129d1d34bafSZixu Wang }, 130d1d34bafSZixu Wang { 131d1d34bafSZixu Wang "kind": "text", 132d1d34bafSZixu Wang "spelling": ">" 133d1d34bafSZixu Wang } 134d1d34bafSZixu Wang ], 135d1d34bafSZixu Wang "identifier": { 136d1d34bafSZixu Wang "interfaceLanguage": "objective-c", 137d1d34bafSZixu Wang "precise": "c:objc(pl)AnotherProtocol" 138d1d34bafSZixu Wang }, 139d1d34bafSZixu Wang "kind": { 140d1d34bafSZixu Wang "displayName": "Protocol", 141d1d34bafSZixu Wang "identifier": "objective-c.protocol" 142d1d34bafSZixu Wang }, 143d1d34bafSZixu Wang "location": { 14428d79314SDaniel Grumberg "position": { 145d1d34bafSZixu Wang "character": 11, 14628d79314SDaniel Grumberg "line": 4 14728d79314SDaniel Grumberg }, 148d1d34bafSZixu Wang "uri": "file://INPUT_DIR/input.h" 149d1d34bafSZixu Wang }, 150d1d34bafSZixu Wang "names": { 15180ae3665SDaniel Grumberg "navigator": [ 15280ae3665SDaniel Grumberg { 15380ae3665SDaniel Grumberg "kind": "identifier", 15480ae3665SDaniel Grumberg "spelling": "AnotherProtocol" 15580ae3665SDaniel Grumberg } 15680ae3665SDaniel Grumberg ], 157d1d34bafSZixu Wang "subHeading": [ 158d1d34bafSZixu Wang { 159d1d34bafSZixu Wang "kind": "identifier", 160d1d34bafSZixu Wang "spelling": "AnotherProtocol" 161d1d34bafSZixu Wang } 162d1d34bafSZixu Wang ], 163d1d34bafSZixu Wang "title": "AnotherProtocol" 16428d79314SDaniel Grumberg }, 16528d79314SDaniel Grumberg "pathComponents": [ 16628d79314SDaniel Grumberg "AnotherProtocol" 16728d79314SDaniel Grumberg ] 168d1d34bafSZixu Wang } 169d1d34bafSZixu Wang ] 170d1d34bafSZixu Wang} 171