This is somewhat intentional. While simple names can be encoded hierarchically 
like this, generics make everything more tricky. Consider a demangled name 
"Contacts.Person.Address<AddressKit.UnitedStates>.PostCode"—in this case not 
only is splitting on "." is no longer a reasonable thing to do, but there's not 
currently a way to get the type for 'Address' with a particular generic 
argument.

The Swift compiler and Foundation teams were a bit at odds here, trying to 
decide whether it would be appropriate to use Swift's current mangling scheme 
for encoded class names, or whether it would be better to pick something else. 
(This is what the Objective-C runtime currently does on Apple platforms, but 
that too could be changed, though we'd have to be careful about 
backward-compatibility.) IIRC at the time we decided it was best to implement 
the minimal thing that handles the common case—top-level non-generic types—and 
worry about the more complicated things later.

Jordan



> On Oct 27, 2016, at 6:54, swizzlr via swift-dev <swift-...@swift.org> wrote:
> 
> Swift Foundation has an incomplete implementation of 
> NSClassFromString/NSStringFromClass (link: 
> https://github.com/apple/swift-corelibs-foundation/blob/master/Foundation/NSObjCRuntime.swift#L230-L282
>  
> <https://github.com/apple/swift-corelibs-foundation/blob/master/Foundation/NSObjCRuntime.swift#L230-L282>)
>  due to a lack of a standardised method of encoding nested Swift classes, nor 
> other Swift types.
> 
> I would think that given
> 
> module Contacts
> 
> class Person {
>       struct Address {
>               class Postcode {}
>       }
> }
> 
> Postcode would be encoded as Contacts.Person.Address.Postcode. Since it is 
> not possible to have two different types with the same identifier in the same 
> namespace (i.e. an enum/a class/a struct with the same name at the same 
> declaration level) the encoding would similarly be simple. May I proceed 
> under that assumption or are there ABI stability issues I have yet to 
> consider?
> 
> Tom
> _______________________________________________
> swift-dev mailing list
> swift-...@swift.org
> https://lists.swift.org/mailman/listinfo/swift-dev

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

Reply via email to