// 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"