I've been encouraging Paulo Faria to mention this case in his push for a way to disambiguate extension methods, with the thought being we could then use the same syntax to differentiate top-level names as well.
I'd also be happy with the "import as" syntax. The underscore syntax seems a little opaque, but I suppose it wouldn't come up very often. Jordan > On Jun 17, 2016, at 19:52, Félix Cloutier via swift-evolution > <[email protected]> wrote: > > Hello all, > > I recently ran into a bug <http://stackoverflow.com/q/37892621/251153> that > leaves me unable to fully-qualify the name of a type. If you import a module > named Foo that also contains a type named Foo, attempts to fully-qualify any > name in the Foo module will instead attempt to find something inside the Foo > type. This bug has already been reported > <https://bugs.swift.org/browse/SR-898>. > > Here's an example with Károly Lőrentey's BTree module (which also contains a > BTree type) that I encountered while trying to use the OrderedSet type: > > let set = OrderedSet<Int>() > // error: 'OrderedSet' is ambiguous for type lookup in this context > // Found this candidate: Foundation.OrderedSet:3:14 > // Found this candidate: BTree.OrderedSet:12:15 > To solve this, you would normally write BTree.OrderedSet, but now Swift > thinks that BTree is the BTree type, not the BTree module: > > let set = BTree.OrderedSet<Int>() > // error: reference to generic type 'BTree' requires arguments in <...> > Any fix will require a change to the language, and as Jordan Rose stated on > the bug, it "needs design", so I would like to bring up the issue and discuss > possible solutions. > > I can see several options (leaving "do nothing" aside, since I believe that > this needs to be resolved): > > Prevent modules from containing a type with the same name > Allow modules to be imported under different names (`import BTree as > BTreeModule`, `import BTreeModule = BTree` or any similar syntax) > Create a new syntax that indicates that you're naming a module, not a type > (like `_.BTree.OrderedSet`) > > Thoughts? > > Félix > > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
