>> 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. >
Keep in mind that extensions are not types. (See prev response) > > >> >> -- >> Brent Royal-Gordon >> Architechies >> >> _______________________________________________ >> swift-evolution mailing list >> swift-evolution@swift.org >> https://lists.swift.org/mailman/listinfo/swift-evolution > > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution