Not 100% sure this belongs here, but I'll bite.

The new `Notification.Name` type is a beautiful application of SE-0033 "Import 
Objective-C Constants as Swift Types"[1] which removes a lot of boilerplate. 
However,  I think it puts the resulting constants in the wrong place. They all 
get piled into `Notification.Name`, resulting in:

        Notification.Name.NSSystemTimeZoneDidChange
        Notification.Name.NSThreadWillExit
        Notification.Name.NSURLCredentialStorageChanged
        Notification.Name.NSUbiquityIdentityDidChange
        Notification.Name.NSUndoManagerCheckpoint

I think these would be a lot better off as:

        TimeZone.systemTimeZoneDidChange
        Thread.willExit
        URLCredentialStorage.changed
        FileManager.ubiquityIdentityDidChange
        UndoManager.checkpoint

Most of these could probably be inferred by prefix matching, but some, like 
`TimeZone.systemTimeZoneDidChange` and `FileManager.ubiquityIdentityDidChange`, 
would probably have to be done manually. There might even be a few which have 
no natural attachment point, though I can't think of any off the top of my head.

To be clear, I don't think we want this behavior on all `swift_wrapper` types. 
For instance, the specified behavior is probably appropriate for 
`HKQuantityTypeIdentifier` and `NSErrorDomain`, the primary examples in 
SE-0033. But `Notification.Name` is a slightly different use from what we 
imagined for this feature, and I think it needs a slightly different behavior.

So, what's the best way to pursue fixing this issue?

1. A new proposal, perhaps introducing `swift_wrapper(struct,prefix_matched)`?

2. An amendment to SE-0033?

3. A radar filed with the Foundation team?

4. A blizzard of radars filed with *every* framework team?

5. Deferral to post-Swift 3?



[1] 
https://github.com/apple/swift-evolution/blob/master/proposals/0033-import-objc-constants.md

-- 
Brent Royal-Gordon
Architechies

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to