> On May 12, 2016, at 10:44, Joe Groff <jgr...@apple.com> wrote: > > >> On May 12, 2016, at 9:27 AM, Jordan Rose via swift-dev <swift-dev@swift.org >> <mailto:swift-dev@swift.org>> wrote: >> >> >> - I’m uncomfortable with using the term “undefined behavior” as if it’s >> universally understood. Up until now we haven't formally had that notion in >> Swift, just “type safety” and “memory safety” and “invariant-preserving” and >> the like. Maybe we need it now, but I think it needs to be explicitly >> defined. (I’d actually talk to Dave about exactly what terms make the most >> sense for users.) > > We do have undefined behavior, and use that term in the standard library docs > where appropriate: > > stdlib/public/core/Optional.swift- /// `!` (forced unwrap) operator. > However, in optimized builds (`-O`), no > stdlib/public/core/Optional.swift- /// check is performed to ensure that the > current instance actually has a > stdlib/public/core/Optional.swift- /// value. Accessing this property in the > case of a `nil` value is a serious > stdlib/public/core/Optional.swift: /// programming error and could lead to > undefined behavior or a runtime > stdlib/public/core/Optional.swift- /// error. > stdlib/public/core/Optional.swift- /// > stdlib/public/core/Optional.swift- /// In debug builds (`-Onone`), the > `unsafelyUnwrapped` property has the same > -- > stdlib/public/core/StringBridge.swift- /// The caller of this function > guarantees that the closure 'body' does not > stdlib/public/core/StringBridge.swift- /// escape the object referenced by > the opaque pointer passed to it or > stdlib/public/core/StringBridge.swift- /// anything transitively reachable > form this object. Doing so > stdlib/public/core/StringBridge.swift: /// will result in undefined behavior. > stdlib/public/core/StringBridge.swift- > @_semantics("self_no_escaping_closure") > stdlib/public/core/StringBridge.swift- func > _unsafeWithNotEscapedSelfPointer<Result>( > stdlib/public/core/StringBridge.swift- _ body: @noescape (OpaquePointer) > throws -> Result > -- > stdlib/public/core/Unmanaged.swift- /// reference's lifetime fixed for the > duration of the > stdlib/public/core/Unmanaged.swift- /// '_withUnsafeGuaranteedRef' call. > stdlib/public/core/Unmanaged.swift- /// > stdlib/public/core/Unmanaged.swift: /// Violation of this will incur > undefined behavior. > stdlib/public/core/Unmanaged.swift- /// > stdlib/public/core/Unmanaged.swift- /// A lifetime of a reference 'the > instance' is fixed over a point in the > stdlib/public/core/Unmanaged.swift- /// programm if:
Those latter two are in stdlib-internal declarations. I think I have the same objection with using the term for 'unsafelyUnwrapped'. Jordan
_______________________________________________ swift-dev mailing list swift-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-dev