<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">This is a good reason why package names should be clear and specific, avoiding common phrases and terms that will overlap.&nbsp;</div><div class="">A proven way to avoid such issues is to namespace your packages in some way, e.g. prefer <font face="Menlo" class="">SadunStringUtilities</font> vs <font face="Menlo" class="">SwiftString</font>.</div><div class=""><br class=""></div><div class="">At this time there is no built-in way that I know of how to deal with module name collisions. So let me speculate about what</div><div class="">a solution might look like. (Skip to the next message if this doesn't interest.) Having a reverse domain name as</div><div class="">part of the Package declaration syntax maybe could address part of the issue, for example:</div><div class=""><br class=""></div><div class=""><font face="Menlo" class="">import PackageDescription</font></div><div class=""><font face="Menlo" class=""><br class=""></font></div><div class=""><font face="Menlo" class="">let package = Package(</font></div><div class=""><font face="Menlo" class="">&nbsp; &nbsp; name: "SwiftString"</font></div><div class=""><font face="Menlo" class="">&nbsp; &nbsp; origin: "com.sadun"</font></div><div class=""><font face="Menlo" class="">)</font></div><div class=""><br class=""></div><div class="">and in the case of name conflicts use:</div><div class=""><br class=""></div><div class=""><font face="Menlo" class="">import com.sadun.SwiftString</font></div><div class=""><font face="Menlo" class="">import com.LeeJason.SwiftString</font></div><div class=""><br class=""></div><div class="">with all the annoying resolution that might involve in disambiguating symbols. &nbsp;I could also&nbsp;</div><div class="">see some kind of package alias being needed if this problem got too bad, e.g.</div><div class=""><br class=""></div><div class=""><font face="Menlo" class="">packagealias Sadun = com.sadun.SwiftString</font></div><div class=""><font face="Menlo" class="">packagealias LeeJ = com.lLeeJason.SwiftString</font></div><div class=""><font face="Menlo" class=""><br class=""></font></div><div class=""><font face="Menlo" class="">let x = LeeJ.countStringItems(someString)</font></div><div class=""><br class=""></div><div class="">but I don't know how Swift would disambiguate, for example, two packages that both created</div><div class="">&nbsp;public extensions on String both being imported into the same file, and both offering conflicting, say, properties.</div><div class=""><br class=""></div><div class="">-- Erica</div><div class=""><br class=""></div><br class=""><div><blockquote type="cite" class=""><div class="">On Feb 1, 2016, at 6:41 PM, Jason Lee via swift-users &lt;<a href="mailto:swift-users@swift.org" class="">swift-users@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Today I introduced a dependency on another project's package with brought over a module name that conflicted with one he modules in my project.<br class=""><br class="">Currently my project has multiple modules (and executables) in the package and everything is working well for me. However, when I got this conflict today, I was thinking this will be a problem going forward. I'm sure it's been solved already by the package manager team, but I haven't figured out how to do this from the docs yet.<br class=""><br class="">An example:<br class="">Package 'A' has a module named 'Base'<br class="">My package also has a module named 'Base'<br class=""><br class="">When I build, I get a circular ref error now. One way I was thinking I cld fix this on my end is to prefix all my module names with my package name (seems redundant, of course). Something like 'Base' becomes 'MyAppBase'. And my imports could look like so:<br class=""><br class="">import Foundation<br class="">import Base<br class="">import MyAppBase<br class=""><br class="">Any thoughts on this? Thx.<br class=""><br class="">- jason<br class=""><br class="">Sent from my iPhone<br class="">_______________________________________________<br class="">swift-users mailing list<br class=""><a href="mailto:swift-users@swift.org" class="">swift-users@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-users<br class=""></div></div></blockquote></div><br class=""></body></html>