-
Notifications
You must be signed in to change notification settings - Fork 10.3k
/
ErrorType.swift
61 lines (54 loc) · 2.05 KB
/
ErrorType.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2016 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
// TODO: API review
/// A type representing an error value that can be thrown.
@swift3_migration(renamed="ErrorProtocol")
public protocol ErrorType {
var _domain: String { get }
var _code: Int { get }
}
extension ErrorType {
public var _domain: String {
return String(reflecting: self.dynamicType)
}
}
#if _runtime(_ObjC)
// Helper functions for the C++ runtime to have easy access to domain and
// code as Objective-C values.
@warn_unused_result
@_silgen_name("swift_stdlib_getErrorDomainNSString")
public func _stdlib_getErrorDomainNSString<T : ErrorType>(x: UnsafePointer<T>)
-> AnyObject {
return x.memory._domain._bridgeToObjectiveCImpl()
}
@warn_unused_result
@_silgen_name("swift_stdlib_getErrorCode")
public func _stdlib_getErrorCode<T : ErrorType>(x: UnsafePointer<T>) -> Int {
return x.memory._code
}
// Known function for the compiler to use to coerce `ErrorType` instances to
// `NSError`.
@warn_unused_result
@_silgen_name("swift_bridgeErrorTypeToNSError")
public func _bridgeErrorTypeToNSError(e: ErrorType) -> AnyObject
#endif
/// Invoked by the compiler when the subexpression of a `try!` expression
/// throws an error.
@_silgen_name("swift_unexpectedError")
public func _unexpectedError(error: ErrorType) {
preconditionFailure("'try!' expression unexpectedly raised an error: \(String(reflecting: error))")
}
/// Invoked by the compiler when code at top level throws an uncaught error.
@_silgen_name("swift_errorInMain")
public func _errorInMain(error: ErrorType) {
fatalError("Error raised at top level: \(String(reflecting: error))")
}