> On Jun 7, 2016, at 7:09 AM, Charlie Monroe via swift-evolution
> <[email protected]> wrote:
>
>> We already have the concept of prefixing a type name with a module to
>> disambiguate when two modules have the same type. I wonder if we could do
>> the same thing to disambiguate between conflicting extensions?
>>
>> import ModuleA
>> import ModuleB
>>
>> ("hello world" as ModuleA.String).capitalized() // Swift.String, with
>> only APIs known to ModuleA
>> ("hello world" as ModuleB.String).capitalized() // Swift.String, with
>> only APIs known to ModuleB
>> "hello world".capitalized() //
>> Still causes a compile-time error for ambiguity
>
> This only introduces a new kind of ambiguity since you can have both ModuleA
> and ModuleB declare something like
>
> class String {
> /// ...
> }
>
> And now you have no idea if ModuleA.String refers to Swift.String extension
> in ModuleA or class String in ModuleA.
Perhaps the disambiguation should be on the extension method, not the type:
import ModuleA
import ModuleB
"hello world”.ModuleA::capitalized()
"hello world”.ModuleB::capitalized()
(Insert your own namespace separator if :: gives you unpleasant C++ flashbacks.)
P
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution