Is anything private by default when declared in a module?

Namespace rswhite4 at googlemail.com
Mon Dec 2 13:34:51 PST 2013


On Monday, 2 December 2013 at 21:30:08 UTC, Namespace wrote:
> On Monday, 2 December 2013 at 21:10:44 UTC, 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?
>>
>>
>> T
> I mean yes, but I find nothing.
>
> Short example:
>
> io.d
> ----
> private import std.stdio : writeln;
> ----
>
> io_use.d
> ----
> import io;
>
> void main() {
> 	writeln("Hello");
> }
> ----

I have found it
https://github.com/D-Programming-Language/dmd/pull/2256


More information about the Digitalmars-d-learn mailing list