Implements part of SE-0110. Single argument in closures will not be accepted if
there exists explicit type with a number of arguments that's not 1.
```swift
let f: (Int, Int) -> Void = { x in } // this is now an error
```
Note there's a second part of SE-0110 which could be considered additive,
which says one must add an extra pair of parens to specify a single arugment
type that is a tuple:
```swift
let g ((Int, Int)) -> Void = { y in } // y should have type (Int, Int)
```
This patch does not implement that part.
The Clang attribute allows one to state that a particular enumeration
type describes an error, and associates it with a particular domain
constant. However, due to lack of API notes support, this attribute
wasn't actually getting used. Instead, we had a number of explicit
extensions to enum types to make them conform to the _BridgedNSError
protocol explicitly.
Now that we have API notes, use them to make these enums into error
enums with the appropriate domain, so that the Clang importer will
synthesize the _BridgedNSError conformances. Then, remove all of the
explicit conformances---and with them, the overlays for 12 frameworks.
There is a small fix to more eagerly consider these conformances as
"used" if an expression is formed with the error enum as a value
type. This better ensures that the conformances will be available at
runtime when needed.
This cleanup is needed to implement SE-0112 (NSError bridging),
although it is useful by itself.
As a first step to allowing the build script to build *only*
static library versions of the stdlib, change `add_swift_library`
such that callers must pass in `SHARED`, `STATIC`, or `OBJECT_LIBRARY`.
Ideally, only these flags would be used to determine whether to
build shared, static, or object libraries, but that is not currently
the case -- `add_swift_library` also checks whether the library
`IS_STDLIB` before performing certain additional actions. This will be
cleaned up in a future commit.
The iPhoneOS SDK was not updated with the associated syntax change in the
language. This cleans up the deprecation warnings in the iPhoneOS stdlib build.
NFC.
At some point I want to propose a revised model for exports, but for now
just mark that support for '@exported' is still experimental and subject
to change. (Thanks, Max.)
Remove a temporary hack added in r29026 that disabled availability checking
for the WatchKit overlay due to SDK update issues. It is no longer needed.
rdar://problem/21099550
Swift SVN r29652
Addresses a bitcode linking problem when linking with the SDK overlays,
which are built against the internal SDK, against a program built
against the public SDK, which does not have
CoreText. rdar://problem/21246363
Swift SVN r29395
The <Redacted>13A261 iOS SDK adds an availability attribute marking the imported
WatchKitErrorCode enum as available only on iOS 8.2 and newer. The WatchKit overlay
has a protocol extension for WatchKitErrorCode, so mark the extension as only available
on 8.2 and newer. On <Redacted>13A261 this silences a diagnostic complaining that
WatchKitErrorCode is only available on 8.2 and newer.
However, on <Redacted>13A254 this new annotation itself causes an error because on that
SDK WatchKitErrorCode claims to be available on all iOS versions and yet the conformance
would only hold on 8.2 and newer. To make this second diagnostic go away, this
commit temporarily disables availability checking for the WatchKit overlay.
rdar://problem/21099550 tracks re-enabling availability checking when we update the bots,
etc. to <Redacted>13A261.
rdar://problem/21098396
Swift SVN r29026
Introduce a number of small overlays to bridge the NSError domains for
a number of frameworks into existing imported enums. This batch only
covers cases where there is an existing NS_ENUM describing the codes
for the domain, so we need only extend that enum to provide the
appropriate _BridgedNSError conformance.
This is the bulk of rdar://problem/20536610.
Swift SVN r28585