-
Notifications
You must be signed in to change notification settings - Fork 10.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Sema] Define availability via compiler flag
Introduce availability macros defined by a frontend flag. This feature makes it possible to set the availability versions at the moment of compilation instead of having it hard coded in the sources. It can be used by projects with a need to change the availability depending on the compilation context while using the same sources. The availability macro is defined with the `-define-availability` flag: swift MyLib.swift -define-availability "_iOS8Aligned:macOS 10.10, iOS 8.0" .. The macro can be used in code instead of a platform name and version: @available(_iOS8Aligned, *) public func foo() {} rdar://problem/65612624
- Loading branch information
Showing
10 changed files
with
379 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
// RUN: %empty-directory(%t) | ||
|
||
// RUN: %target-swift-frontend -swift-version 5 -enable-library-evolution -typecheck -module-name Test -emit-module-interface-path %t/Test.swiftinterface %s -define-availability "_iOS8Aligned:macOS 10.10, iOS 8.0" -define-availability "_iOS9Aligned:macOS 10.11, iOS 9.0" -define-availability "_iOS9:iOS 9.0" -define-availability "_macOS10_11:macOS 10.11" -define-availability "_myProject 1.0:macOS 10.11" -define-availability "_myProject 2.5:macOS 10.12" | ||
// RUN: %FileCheck %s < %t/Test.swiftinterface | ||
|
||
@available(_iOS8Aligned, *) | ||
public func onMacOS10_10() {} | ||
// CHECK: @available(macOS 10.10, iOS 8.0, *) | ||
// CHECK-NEXT: public func onMacOS10_10 | ||
|
||
@available(_iOS9Aligned, *) | ||
public func onMacOS10_11() {} | ||
// CHECK: @available(macOS 10.11, iOS 9.0, *) | ||
// CHECK-NEXT: public func onMacOS10_11() | ||
|
||
@available(_iOS9, _macOS10_11, tvOS 11.0, *) | ||
public func composed() {} | ||
// CHECK: @available(iOS 9.0, macOS 10.11, tvOS 11.0, *) | ||
// CHECK-NEXT: public func composed() | ||
|
||
@available(_myProject 1.0, *) | ||
public func onMyProjectV1() {} | ||
// CHECK: @available(macOS 10.11, *) | ||
// CHECK-NEXT: public func onMyProjectV1 | ||
|
||
@available(_myProject 2.5, *) | ||
public func onMyProjectV2_5() {} | ||
// CHECK: @available(macOS 10.12, *) | ||
// CHECK-NEXT: public func onMyProjectV2_5 |
Oops, something went wrong.