Skip to content

Commit a08e895

Browse files
authored
Merge pull request #581 from itaiferber/pr-error
Foundation API Conformance Update: Errors
2 parents 877d47a + ac3b857 commit a08e895

File tree

9 files changed

+1225
-320
lines changed

9 files changed

+1225
-320
lines changed

Foundation/FoundationErrors.swift

Lines changed: 61 additions & 249 deletions
Original file line numberDiff line numberDiff line change
@@ -7,241 +7,53 @@
77
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
88
//
99

10-
public struct NSCocoaError : RawRepresentable, Swift.Error, __BridgedNSError {
11-
public let rawValue: Int
12-
public init(rawValue: Int) {
13-
self.rawValue = rawValue
14-
}
15-
public static var __NSErrorDomain: String { return NSCocoaErrorDomain }
16-
}
17-
18-
/// Enumeration that describes the error codes within the Cocoa error
19-
/// domain.
20-
public extension NSCocoaError {
21-
22-
public static var FileNoSuchFileError: NSCocoaError {
23-
return NSCocoaError(rawValue: 4)
24-
}
25-
26-
public static var FileLockingError: NSCocoaError {
27-
return NSCocoaError(rawValue: 255)
28-
}
29-
30-
public static var FileReadUnknownError: NSCocoaError {
31-
return NSCocoaError(rawValue: 256)
32-
}
33-
34-
public static var FileReadNoPermissionError: NSCocoaError {
35-
return NSCocoaError(rawValue: 257)
36-
}
37-
38-
public static var FileReadInvalidFileNameError: NSCocoaError {
39-
return NSCocoaError(rawValue: 258)
40-
}
41-
42-
public static var FileReadCorruptFileError: NSCocoaError {
43-
return NSCocoaError(rawValue: 259)
44-
}
45-
46-
public static var FileReadNoSuchFileError: NSCocoaError {
47-
return NSCocoaError(rawValue: 260)
48-
}
49-
50-
public static var FileReadInapplicableStringEncodingError: NSCocoaError {
51-
return NSCocoaError(rawValue: 261)
52-
}
53-
public static var FileReadUnsupportedSchemeError: NSCocoaError {
54-
return NSCocoaError(rawValue: 262)
55-
}
56-
57-
public static var FileReadTooLargeError: NSCocoaError {
58-
return NSCocoaError(rawValue: 263)
59-
}
60-
61-
public static var FileReadUnknownStringEncodingError: NSCocoaError {
62-
return NSCocoaError(rawValue: 264)
63-
}
64-
65-
public static var FileWriteUnknownError: NSCocoaError {
66-
return NSCocoaError(rawValue: 512)
67-
}
68-
69-
public static var FileWriteNoPermissionError: NSCocoaError {
70-
return NSCocoaError(rawValue: 513)
71-
}
72-
73-
public static var FileWriteInvalidFileNameError: NSCocoaError {
74-
return NSCocoaError(rawValue: 514)
75-
}
76-
77-
public static var FileWriteFileExistsError: NSCocoaError {
78-
return NSCocoaError(rawValue: 516)
79-
}
80-
81-
public static var FileWriteInapplicableStringEncodingError: NSCocoaError {
82-
return NSCocoaError(rawValue: 517)
83-
}
84-
85-
public static var FileWriteUnsupportedSchemeError: NSCocoaError {
86-
return NSCocoaError(rawValue: 518)
87-
}
88-
89-
public static var FileWriteOutOfSpaceError: NSCocoaError {
90-
return NSCocoaError(rawValue: 640)
91-
}
92-
93-
public static var FileWriteVolumeReadOnlyError: NSCocoaError {
94-
return NSCocoaError(rawValue: 642)
95-
}
96-
97-
public static var FileManagerUnmountUnknownError: NSCocoaError {
98-
return NSCocoaError(rawValue: 768)
99-
}
100-
101-
public static var FileManagerUnmountBusyError: NSCocoaError {
102-
return NSCocoaError(rawValue: 769)
103-
}
104-
105-
public static var KeyValueValidationError: NSCocoaError {
106-
return NSCocoaError(rawValue: 1024)
107-
}
108-
109-
public static var FormattingError: NSCocoaError {
110-
return NSCocoaError(rawValue: 2048)
111-
}
112-
113-
public static var UserCancelledError: NSCocoaError {
114-
return NSCocoaError(rawValue: 3072)
115-
}
116-
117-
public static var FeatureUnsupportedError: NSCocoaError {
118-
return NSCocoaError(rawValue: 3328)
119-
}
120-
121-
public static var ExecutableNotLoadableError: NSCocoaError {
122-
return NSCocoaError(rawValue: 3584)
123-
}
124-
125-
public static var ExecutableArchitectureMismatchError: NSCocoaError {
126-
return NSCocoaError(rawValue: 3585)
127-
}
128-
129-
public static var ExecutableRuntimeMismatchError: NSCocoaError {
130-
return NSCocoaError(rawValue: 3586)
131-
}
132-
133-
public static var ExecutableLoadError: NSCocoaError {
134-
return NSCocoaError(rawValue: 3587)
135-
}
136-
137-
public static var ExecutableLinkError: NSCocoaError {
138-
return NSCocoaError(rawValue: 3588)
139-
}
140-
141-
public static var PropertyListReadCorruptError: NSCocoaError {
142-
return NSCocoaError(rawValue: 3840)
143-
}
144-
145-
public static var PropertyListReadUnknownVersionError: NSCocoaError {
146-
return NSCocoaError(rawValue: 3841)
147-
}
148-
149-
public static var PropertyListReadStreamError: NSCocoaError {
150-
return NSCocoaError(rawValue: 3842)
151-
}
152-
153-
public static var PropertyListWriteStreamError: NSCocoaError {
154-
return NSCocoaError(rawValue: 3851)
155-
}
156-
157-
public static var PropertyListWriteInvalidError: NSCocoaError {
158-
return NSCocoaError(rawValue: 3852)
159-
}
160-
161-
public static var XPCConnectionInterrupted: NSCocoaError {
162-
return NSCocoaError(rawValue: 4097)
163-
}
164-
165-
public static var XPCConnectionInvalid: NSCocoaError {
166-
return NSCocoaError(rawValue: 4099)
167-
}
168-
169-
public static var XPCConnectionReplyInvalid: NSCocoaError {
170-
return NSCocoaError(rawValue: 4101)
171-
}
172-
173-
public static var UbiquitousFileUnavailableError: NSCocoaError {
174-
return NSCocoaError(rawValue: 4353)
175-
}
176-
177-
public static var UbiquitousFileNotUploadedDueToQuotaError: NSCocoaError {
178-
return NSCocoaError(rawValue: 4354)
179-
}
180-
181-
public static var UbiquitousFileUbiquityServerNotAvailable: NSCocoaError {
182-
return NSCocoaError(rawValue: 4355)
183-
}
184-
185-
public static var UserActivityHandoffFailedError: NSCocoaError {
186-
return NSCocoaError(rawValue: 4608)
187-
}
188-
189-
public static var UserActivityConnectionUnavailableError: NSCocoaError {
190-
return NSCocoaError(rawValue: 4609)
191-
}
192-
193-
public static var UserActivityRemoteApplicationTimedOutError: NSCocoaError {
194-
return NSCocoaError(rawValue: 4610)
195-
}
196-
197-
public static var UserActivityHandoffUserInfoTooLargeError: NSCocoaError {
198-
return NSCocoaError(rawValue: 4611)
199-
}
200-
201-
public static var CoderReadCorruptError: NSCocoaError {
202-
return NSCocoaError(rawValue: 4864)
203-
}
204-
205-
public static var CoderValueNotFoundError: NSCocoaError {
206-
return NSCocoaError(rawValue: 4865)
207-
}
208-
209-
public var isCoderError: Bool {
210-
return rawValue >= 4864 && rawValue <= 4991
211-
}
212-
213-
public var isExecutableError: Bool {
214-
return rawValue >= 3584 && rawValue <= 3839
215-
}
216-
217-
public var isFileError: Bool {
218-
return rawValue >= 0 && rawValue <= 1023
219-
}
220-
221-
public var isFormattingError: Bool {
222-
return rawValue >= 2048 && rawValue <= 2559
223-
}
224-
225-
public var isPropertyListError: Bool {
226-
return rawValue >= 3840 && rawValue <= 4095
227-
}
228-
229-
public var isUbiquitousFileError: Bool {
230-
return rawValue >= 4352 && rawValue <= 4607
231-
}
232-
233-
public var isUserActivityError: Bool {
234-
return rawValue >= 4608 && rawValue <= 4863
235-
}
236-
237-
public var isValidationError: Bool {
238-
return rawValue >= 1024 && rawValue <= 2047
239-
}
240-
241-
public var isXPCConnectionError: Bool {
242-
return rawValue >= 4096 && rawValue <= 4224
243-
}
244-
}
10+
public var NSFileNoSuchFileError: Int { return CocoaError.Code.fileNoSuchFile.rawValue }
11+
public var NSFileLockingError: Int { return CocoaError.Code.fileLocking.rawValue }
12+
public var NSFileReadUnknownError: Int { return CocoaError.Code.fileReadUnknown.rawValue }
13+
public var NSFileReadNoPermissionError: Int { return CocoaError.Code.fileReadNoPermission.rawValue }
14+
public var NSFileReadInvalidFileNameError: Int { return CocoaError.Code.fileReadInvalidFileName.rawValue }
15+
public var NSFileReadCorruptFileError: Int { return CocoaError.Code.fileReadCorruptFile.rawValue }
16+
public var NSFileReadNoSuchFileError: Int { return CocoaError.Code.fileReadNoSuchFile.rawValue }
17+
public var NSFileReadInapplicableStringEncodingError: Int { return CocoaError.Code.fileReadInapplicableStringEncoding.rawValue }
18+
public var NSFileReadUnsupportedSchemeError: Int { return CocoaError.Code.fileReadUnsupportedScheme.rawValue }
19+
public var NSFileReadTooLargeError: Int { return CocoaError.Code.fileReadTooLarge.rawValue }
20+
public var NSFileReadUnknownStringEncodingError: Int { return CocoaError.Code.fileReadUnknownStringEncoding.rawValue }
21+
public var NSFileWriteUnknownError: Int { return CocoaError.Code.fileWriteUnknown.rawValue }
22+
public var NSFileWriteNoPermissionError: Int { return CocoaError.Code.fileWriteNoPermission.rawValue }
23+
public var NSFileWriteInvalidFileNameError: Int { return CocoaError.Code.fileWriteInvalidFileName.rawValue }
24+
public var NSFileWriteFileExistsError: Int { return CocoaError.Code.fileWriteFileExists.rawValue }
25+
public var NSFileWriteInapplicableStringEncodingError: Int { return CocoaError.Code.fileWriteInapplicableStringEncoding.rawValue }
26+
public var NSFileWriteUnsupportedSchemeError: Int { return CocoaError.Code.fileWriteUnsupportedScheme.rawValue }
27+
public var NSFileWriteOutOfSpaceError: Int { return CocoaError.Code.fileWriteOutOfSpace.rawValue }
28+
public var NSFileWriteVolumeReadOnlyError: Int { return CocoaError.Code.fileWriteVolumeReadOnly.rawValue }
29+
public var NSFileManagerUnmountUnknownError: Int { return CocoaError.Code.fileManagerUnmountUnknown.rawValue }
30+
public var NSFileManagerUnmountBusyError: Int { return CocoaError.Code.fileManagerUnmountBusy.rawValue }
31+
public var NSKeyValueValidationError: Int { return CocoaError.Code.keyValueValidation.rawValue }
32+
public var NSFormattingError: Int { return CocoaError.Code.formatting.rawValue }
33+
public var NSUserCancelledError: Int { return CocoaError.Code.userCancelled.rawValue }
34+
public var NSFeatureUnsupportedError: Int { return CocoaError.Code.featureUnsupported.rawValue }
35+
public var NSExecutableNotLoadableError: Int { return CocoaError.Code.executableNotLoadable.rawValue }
36+
public var NSExecutableArchitectureMismatchError: Int { return CocoaError.Code.executableArchitectureMismatch.rawValue }
37+
public var NSExecutableRuntimeMismatchError: Int { return CocoaError.Code.executableRuntimeMismatch.rawValue }
38+
public var NSExecutableLoadError: Int { return CocoaError.Code.executableLoad.rawValue }
39+
public var NSExecutableLinkError: Int { return CocoaError.Code.executableLink.rawValue }
40+
public var NSPropertyListReadCorruptError: Int { return CocoaError.Code.propertyListReadCorrupt.rawValue }
41+
public var NSPropertyListReadUnknownVersionError: Int { return CocoaError.Code.propertyListReadUnknownVersion.rawValue }
42+
public var NSPropertyListReadStreamError: Int { return CocoaError.Code.propertyListReadStream.rawValue }
43+
public var NSPropertyListWriteStreamError: Int { return CocoaError.Code.propertyListWriteStream.rawValue }
44+
public var NSPropertyListWriteInvalidError: Int { return CocoaError.Code.propertyListWriteInvalid.rawValue }
45+
public var NSXPCConnectionInterrupted: Int { return CocoaError.Code.xpcConnectionInterrupted.rawValue }
46+
public var NSXPCConnectionInvalid: Int { return CocoaError.Code.xpcConnectionInvalid.rawValue }
47+
public var NSXPCConnectionReplyInvalid: Int { return CocoaError.Code.xpcConnectionReplyInvalid.rawValue }
48+
public var NSUbiquitousFileUnavailableError: Int { return CocoaError.Code.ubiquitousFileUnavailable.rawValue }
49+
public var NSUbiquitousFileNotUploadedDueToQuotaError: Int { return CocoaError.Code.ubiquitousFileNotUploadedDueToQuota.rawValue }
50+
public var NSUbiquitousFileUbiquityServerNotAvailable: Int { return CocoaError.Code.ubiquitousFileUbiquityServerNotAvailable.rawValue }
51+
public var NSUserActivityHandoffFailedError: Int { return CocoaError.Code.userActivityHandoffFailed.rawValue }
52+
public var NSUserActivityConnectionUnavailableError: Int { return CocoaError.Code.userActivityConnectionUnavailable.rawValue }
53+
public var NSUserActivityRemoteApplicationTimedOutError: Int { return CocoaError.Code.userActivityRemoteApplicationTimedOut.rawValue }
54+
public var NSUserActivityHandoffUserInfoTooLargeError: Int { return CocoaError.Code.userActivityHandoffUserInfoTooLarge.rawValue }
55+
public var NSCoderReadCorruptError: Int { return CocoaError.Code.coderReadCorrupt.rawValue }
56+
public var NSCoderValueNotFoundError: Int { return CocoaError.Code.coderValueNotFound.rawValue }
24557

24658
#if os(OSX) || os(iOS)
24759
import Darwin
@@ -250,24 +62,24 @@ public extension NSCocoaError {
25062
#endif
25163

25264
internal func _NSErrorWithErrno(_ posixErrno : Int32, reading : Bool, path : String? = nil, url : URL? = nil, extraUserInfo : [String : Any]? = nil) -> NSError {
253-
var cocoaError : NSCocoaError
65+
var cocoaError : CocoaError.Code
25466
if reading {
25567
switch posixErrno {
256-
case EFBIG: cocoaError = NSCocoaError.FileReadTooLargeError
257-
case ENOENT: cocoaError = NSCocoaError.FileReadNoSuchFileError
258-
case EPERM, EACCES: cocoaError = NSCocoaError.FileReadNoPermissionError
259-
case ENAMETOOLONG: cocoaError = NSCocoaError.FileReadUnknownError
260-
default: cocoaError = NSCocoaError.FileReadUnknownError
68+
case EFBIG: cocoaError = CocoaError.fileReadTooLarge
69+
case ENOENT: cocoaError = CocoaError.fileReadNoSuchFile
70+
case EPERM, EACCES: cocoaError = CocoaError.fileReadNoPermission
71+
case ENAMETOOLONG: cocoaError = CocoaError.fileReadUnknown
72+
default: cocoaError = CocoaError.fileReadUnknown
26173
}
26274
} else {
26375
switch posixErrno {
264-
case ENOENT: cocoaError = NSCocoaError.FileNoSuchFileError
265-
case EPERM, EACCES: cocoaError = NSCocoaError.FileWriteNoPermissionError
266-
case ENAMETOOLONG: cocoaError = NSCocoaError.FileWriteInvalidFileNameError
267-
case EDQUOT, ENOSPC: cocoaError = NSCocoaError.FileWriteOutOfSpaceError
268-
case EROFS: cocoaError = NSCocoaError.FileWriteVolumeReadOnlyError
269-
case EEXIST: cocoaError = NSCocoaError.FileWriteFileExistsError
270-
default: cocoaError = NSCocoaError.FileWriteUnknownError
76+
case ENOENT: cocoaError = CocoaError.fileNoSuchFile
77+
case EPERM, EACCES: cocoaError = CocoaError.fileWriteNoPermission
78+
case ENAMETOOLONG: cocoaError = CocoaError.fileWriteInvalidFileName
79+
case EDQUOT, ENOSPC: cocoaError = CocoaError.fileWriteOutOfSpace
80+
case EROFS: cocoaError = CocoaError.fileWriteVolumeReadOnly
81+
case EEXIST: cocoaError = CocoaError.fileWriteFileExists
82+
default: cocoaError = CocoaError.fileWriteUnknown
27183
}
27284
}
27385

@@ -277,6 +89,6 @@ internal func _NSErrorWithErrno(_ posixErrno : Int32, reading : Bool, path : Str
27789
} else if let url = url {
27890
userInfo[NSURLErrorKey] = url
27991
}
280-
return NSError(domain: NSCocoaErrorDomain, code: cocoaError.rawValue, userInfo: userInfo)
28192

93+
return NSError(domain: NSCocoaErrorDomain, code: cocoaError.rawValue, userInfo: userInfo)
28294
}

Foundation/NSDate.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,11 +280,11 @@ open class NSDateInterval : NSObject, NSCopying, NSSecureCoding {
280280
public required convenience init?(coder: NSCoder) {
281281
precondition(coder.allowsKeyedCoding)
282282
guard let start = coder.decodeObject(of: NSDate.self, forKey: "NS.startDate") else {
283-
coder.failWithError(NSError(domain: NSCocoaErrorDomain, code: NSCocoaError.CoderValueNotFoundError.rawValue, userInfo: nil))
283+
coder.failWithError(NSError(domain: NSCocoaErrorDomain, code: CocoaError.coderValueNotFound.rawValue, userInfo: nil))
284284
return nil
285285
}
286286
guard let end = coder.decodeObject(of: NSDate.self, forKey: "NS.startDate") else {
287-
coder.failWithError(NSError(domain: NSCocoaErrorDomain, code: NSCocoaError.CoderValueNotFoundError.rawValue, userInfo: nil))
287+
coder.failWithError(NSError(domain: NSCocoaErrorDomain, code: CocoaError.coderValueNotFound.rawValue, userInfo: nil))
288288
return nil
289289
}
290290
self.init(start: start._swiftObject, end: end._swiftObject)

0 commit comments

Comments
 (0)