//===----------------------------------------------------------------------===// // // This source file is part of the Swift.org open source project // // Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors // Licensed under Apache License v2.0 with Runtime Library Exception // // See https://swift.org/LICENSE.txt for license information // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors // //===----------------------------------------------------------------------===// /// An optional type that allows implicit member access. /// /// The `ImplicitlyUnwrappedOptional` type is deprecated. To create an optional /// value that is implicitly unwrapped, place an exclamation mark (`!`) after /// the type that you want to denote as optional. /// /// // An implicitly unwrapped optional integer /// let guaranteedNumber: Int! = 6 /// /// // An optional integer /// let possibleNumber: Int? = 5 @_fixed_layout public enum ImplicitlyUnwrappedOptional : ExpressibleByNilLiteral { // The compiler has special knowledge of the existence of // `ImplicitlyUnwrappedOptional`, but always interacts with it using // the library intrinsics below. /// The absence of a value. Typically written using the nil literal, `nil`. case none /// The presence of a value, stored as `Wrapped`. case some(Wrapped) /// Creates an instance that stores the given value. @_inlineable // FIXME(sil-serialize-all) public init(_ some: Wrapped) { self = .some(some) } /// Creates an instance initialized with `nil`. /// /// Do not call this initializer directly. It is used by the compiler when /// you initialize an `Optional` instance with a `nil` literal. For example: /// /// let i: Index! = nil @_inlineable // FIXME(sil-serialize-all) @_transparent public init(nilLiteral: ()) { self = .none } }