On Monday, December 02, 2013 13:09:06 H. S. Teoh wrote: > On Mon, Dec 02, 2013 at 09:53:09PM +0100, Namespace wrote: > > On Monday, 2 December 2013 at 20:46:58 UTC, Adam D. Ruppe wrote: > > >On Monday, 2 December 2013 at 20:43:23 UTC, Gary Willoughby wrote: > > >>Is anything private by default when declared in a module? > > > > > >I believe imports only. "import foo;" is private, so you write > > >"public import foo;" to expose outside. But other than that, I'm > > >pretty sure everything is public unless you say otherwise. > > > > But sadly named imports aren't private... > > > > /// module foo > > private import std.stdio: writeln; > > > > writeln can be used in any module which imports foo. :/ > > WAT? > > That's messed up. Is there a bug for that?
Yes. It's a longstanding bug with regards to selective imports. They create a conflicting symbol in the importing module's scope. That's why you should never use them at this point. https://d.puremagic.com/issues/show_bug.cgi?id=314 - Jonathan M Davis
