| // RUN: rm -rf %t | |
| /* | |
| * This test file looks slightly different from the other ones since the | |
| * `anyAppleOS` availability attribute needs to be tested for multiple | |
| * target platforms. To make the tests readable, the commands to build | |
| * the symbol graphs and check the contained availability info have been | |
| * grouped per-platform below. | |
| */ | |
| void anyappleos_introduced(void) __attribute__((availability(anyAppleOS, introduced=26.0))); | |
| void anyappleos_all(void) __attribute__((availability(anyAppleOS, introduced=26.0, deprecated=27.0, obsoleted=28.0))); | |
| void anyappleos_unavailable(void) __attribute__((availability(anyAppleOS, unavailable))); | |
| void anyappleos_explicit_override(void) | |
| __attribute__((availability(anyAppleOS, introduced=26.0))) | |
| __attribute__((availability(macOS, introduced=27.0))); | |
| // expected-no-diagnostics | |
| // ========== macOS ========== | |
| // RUN: %clang_cc1 -extract-api --pretty-sgf --emit-sgf-symbol-labels-for-testing -triple arm64-apple-macosx \ | |
| // RUN: -x c-header %s -o %t/macos.symbols.json -verify | |
| // RUN: FileCheck %s --input-file %t/macos.symbols.json --check-prefix MACOS | |
| // MACOS-LABEL: "!testLabel": "c:@F@anyappleos_introduced" | |
| // MACOS: "availability": [ | |
| // MACOS-NEXT: { | |
| // MACOS-NEXT: "domain": "macos", | |
| // MACOS-NEXT: "introduced": { | |
| // MACOS-NEXT: "major": 26, | |
| // MACOS-NEXT: "minor": 0, | |
| // MACOS-NEXT: "patch": 0 | |
| // MACOS-NEXT: } | |
| // MACOS-NEXT: } | |
| // MACOS-NEXT: ] | |
| // MACOS-LABEL: "!testLabel": "c:@F@anyappleos_all" | |
| // MACOS: "availability": [ | |
| // MACOS-NEXT: { | |
| // MACOS-NEXT: "deprecated": { | |
| // MACOS-NEXT: "major": 27, | |
| // MACOS-NEXT: "minor": 0, | |
| // MACOS-NEXT: "patch": 0 | |
| // MACOS-NEXT: }, | |
| // MACOS-NEXT: "domain": "macos", | |
| // MACOS-NEXT: "introduced": { | |
| // MACOS-NEXT: "major": 26, | |
| // MACOS-NEXT: "minor": 0, | |
| // MACOS-NEXT: "patch": 0 | |
| // MACOS-NEXT: }, | |
| // MACOS-NEXT: "obsoleted": { | |
| // MACOS-NEXT: "major": 28, | |
| // MACOS-NEXT: "minor": 0, | |
| // MACOS-NEXT: "patch": 0 | |
| // MACOS-NEXT: } | |
| // MACOS-NEXT: } | |
| // MACOS-NEXT: ] | |
| // MACOS-LABEL: "!testLabel": "c:@F@anyappleos_unavailable" | |
| // MACOS: "availability": [ | |
| // MACOS-NEXT: { | |
| // MACOS-NEXT: "domain": "macos", | |
| // MACOS-NEXT: "isUnconditionallyUnavailable": true | |
| // MACOS-NEXT: } | |
| // MACOS-NEXT: ] | |
| // MACOS-LABEL: "!testLabel": "c:@F@anyappleos_explicit_override" | |
| // MACOS: "availability": [ | |
| // MACOS-NEXT: { | |
| // MACOS-NEXT: "domain": "macos", | |
| // MACOS-NEXT: "introduced": { | |
| // MACOS-NEXT: "major": 27, | |
| // MACOS-NEXT: "minor": 0, | |
| // MACOS-NEXT: "patch": 0 | |
| // MACOS-NEXT: } | |
| // MACOS-NEXT: } | |
| // MACOS-NEXT: ] | |
| // ========== iOS ========== | |
| // RUN: %clang_cc1 -extract-api --pretty-sgf --emit-sgf-symbol-labels-for-testing -triple arm64-apple-ios \ | |
| // RUN: -x c-header %s -o %t/ios.symbols.json -verify | |
| // RUN: FileCheck %s --input-file %t/ios.symbols.json --check-prefix IOS | |
| // IOS-LABEL: "!testLabel": "c:@F@anyappleos_introduced" | |
| // IOS: "availability": [ | |
| // IOS-NEXT: { | |
| // IOS-NEXT: "domain": "ios", | |
| // IOS-NEXT: "introduced": { | |
| // IOS-NEXT: "major": 26, | |
| // IOS-NEXT: "minor": 0, | |
| // IOS-NEXT: "patch": 0 | |
| // IOS-NEXT: } | |
| // IOS-NEXT: } | |
| // IOS-NEXT: ] | |
| // IOS-LABEL: "!testLabel": "c:@F@anyappleos_unavailable" | |
| // IOS: "availability": [ | |
| // IOS-NEXT: { | |
| // IOS-NEXT: "domain": "ios", | |
| // IOS-NEXT: "isUnconditionallyUnavailable": true | |
| // IOS-NEXT: } | |
| // IOS-NEXT: ] | |
| // IOS-LABEL: "!testLabel": "c:@F@anyappleos_explicit_override" | |
| // IOS: "availability": [ | |
| // IOS-NEXT: { | |
| // IOS-NEXT: "domain": "ios", | |
| // IOS-NEXT: "introduced": { | |
| // IOS-NEXT: "major": 26, | |
| // IOS-NEXT: "minor": 0, | |
| // IOS-NEXT: "patch": 0 | |
| // IOS-NEXT: } | |
| // IOS-NEXT: } | |
| // IOS-NEXT: ] | |
| // ========== tvOS ========== | |
| // RUN: %clang_cc1 -extract-api --pretty-sgf --emit-sgf-symbol-labels-for-testing -triple arm64-apple-tvos \ | |
| // RUN: -x c-header %s -o %t/tvos.symbols.json -verify | |
| // RUN: FileCheck %s --input-file %t/tvos.symbols.json --check-prefix TVOS | |
| // TVOS-LABEL: "!testLabel": "c:@F@anyappleos_introduced" | |
| // TVOS: "domain": "tvos" | |
| // ========== watchOS ========== | |
| // RUN: %clang_cc1 -extract-api --pretty-sgf --emit-sgf-symbol-labels-for-testing -triple arm64-apple-watchos \ | |
| // RUN: -x c-header %s -o %t/watchos.symbols.json -verify | |
| // RUN: FileCheck %s --input-file %t/watchos.symbols.json --check-prefix WATCHOS | |
| // WATCHOS-LABEL: "!testLabel": "c:@F@anyappleos_introduced" | |
| // WATCHOS: "domain": "watchos" | |
| // ========== xrOS ========== | |
| // RUN: %clang_cc1 -extract-api --pretty-sgf --emit-sgf-symbol-labels-for-testing -triple arm64-apple-xros \ | |
| // RUN: -x c-header %s -o %t/xros.symbols.json -verify | |
| // RUN: FileCheck %s --input-file %t/xros.symbols.json --check-prefix XROS | |
| // XROS-LABEL: "!testLabel": "c:@F@anyappleos_introduced" | |
| // XROS: "domain": "xros" | |
| // ========== macCatalyst ========== | |
| /* | |
| * The macCatalyst run does not use -verify because an explicit | |
| * `availability(macos, ...)` attribute on a macabi triple emits an | |
| * SDKSettings.json warning which is irrelevant to the test. | |
| */ | |
| // RUN: %clang_cc1 -extract-api --pretty-sgf --emit-sgf-symbol-labels-for-testing -triple arm64-apple-ios-macabi \ | |
| // RUN: -x c-header %s -o %t/maccatalyst.symbols.json | |
| // RUN: FileCheck %s --input-file %t/maccatalyst.symbols.json --check-prefix MACCATALYST | |
| // MACCATALYST-LABEL: "!testLabel": "c:@F@anyappleos_introduced" | |
| // MACCATALYST: "domain": "maccatalyst" | |
| // ========== driverkit ========== | |
| // RUN: %clang_cc1 -extract-api --pretty-sgf --emit-sgf-symbol-labels-for-testing -triple arm64-apple-driverkit \ | |
| // RUN: -x c-header %s -o %t/driverkit.symbols.json -verify | |
| // RUN: FileCheck %s --input-file %t/driverkit.symbols.json --check-prefix DRIVERKIT | |
| // DRIVERKIT-LABEL: "!testLabel": "c:@F@anyappleos_introduced" | |
| // DRIVERKIT: "domain": "driverkit" |