<https://github.com/apple/swift-evolution/blob/master/proposals/0112-nserror-bridging.md>

If <Foundation/NSError.h> uses NS_EXTENSIBLE_STRING_ENUM for `domain` names and 
`userInfo` keys, would a generic type (cf. DispatchSpecificKey) also be 
possible?

        FOUNDATION_EXPORT NSErrorUserInfoKey<NSNumber> const 
NSStringEncodingErrorKey;
        FOUNDATION_EXPORT NSErrorUserInfoKey<NSURL>    const NSURLErrorKey;
        FOUNDATION_EXPORT NSErrorUserInfoKey<NSString> const NSFilePathErrorKey;

This could provide a more typesafe API, without the need for typed accessors in 
each SDK overlay.

        func userInfoValue<Value>(forKey: NSError.UserInfoKey<Value>) -> Value?

The following comment is incorrect, AFAIK. The `helpAnchor` is the name 
attribute of a HTML anchor element.

        /// A localized message providing "help" text if the user requests help.
        var helpAnchor: String? { get }

Also in the LocalizedError protocol, should the `errorDescription` property 
return a non-optional String, to match the NSError API?

Should there be an API for non-localized errors? This is currently available in 
<CoreFoundation/CFError.h> using kCFErrorDescriptionKey.

I agree with Brent's feedback of the RecoverableError protocol.
<http://thread.gmane.org/gmane.comp.lang.swift.evolution/22485/focus=22793>
* It reminds me of the deprecated UIActionSheetDelegate, which also used an Int 
index to identify an action.
* The newer UIAlertController uses UIAlertAction objects, similar to Brent's 
ErrorRecoveryOption protocol.

If error recovery and help anchors are only available in macOS, should there be 
conditional #if os(macOS) blocks?

Is the `errorDomain` property of CustomNSError allowed to vary its result? For 
example:
* an SQLite error <https://www.sqlite.org/rescode.html> could return the 
"primary result code" name.
* an HRESULT <https://en.wikipedia.org/wiki/HRESULT> wrapper could return the 
FACILITY name.
Would a varying domain affect the registered 
setUserInfoValueProvider(forDomain:provider:) callback?

-- Ben

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to