www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Module-level accessibility

reply Sergey <smsmfk gmail.com> writes:
Hi, I'm a newcomer to D. Several days ago I've stumbled upon a very  
strange thing about D. As I understand, module members, such as classes,  
structs, functions and variables can be marked with an accessibility  
attribute, such as private, public, package or export. Say, there's a  
module named "test.d":

module test;

private int x1;
public int x2;

private void fnc1()
{
}
public void fnc2()
{
}

private class C1 {}
public class C2 {}

With a great surprise, I have discovered that from another module it is  
still possible to access both x1 and C1, though fnc1() is inaccessible !
Can anyone explain me what does it mean ?
Thanks in advance.
Oct 03 2010
next sibling parent "Steven Schveighoffer" <schveiguy yahoo.com> writes:
On Sun, 03 Oct 2010 04:50:26 -0400, Sergey <smsmfk gmail.com> wrote:

 Hi, I'm a newcomer to D. Several days ago I've stumbled upon a very  
 strange thing about D. As I understand, module members, such as classes,  
 structs, functions and variables can be marked with an accessibility  
 attribute, such as private, public, package or export. Say, there's a  
 module named "test.d":

 module test;

 private int x1;
 public int x2;

 private void fnc1()
 {
 }
 public void fnc2()
 {
 }

 private class C1 {}
 public class C2 {}

 With a great surprise, I have discovered that from another module it is  
 still possible to access both x1 and C1, though fnc1() is inaccessible !
 Can anyone explain me what does it mean ?
 Thanks in advance.

This has been reported several times, it looks to me like it should be fixed. As far as module data members, static works in C/C++, try using it here (a static member has a local name, so it cannot be used outside the file). I don't think there's any application for static classes, though. But private seems like a much better term for this type of thing, I think it should be supported at a module level across the board. Related bugs: http://d.puremagic.com/issues/show_bug.cgi?id=1161 http://d.puremagic.com/issues/show_bug.cgi?id=1441 http://d.puremagic.com/issues/show_bug.cgi?id=2225 http://d.puremagic.com/issues/show_bug.cgi?id=2775 http://d.puremagic.com/issues/show_bug.cgi?id=2830 Couldn't find any more, did a search for "private" Most likely others have encountered the issue and found one of the related bugs above, then didn't bother to report another one. -Steve
Oct 04 2010
prev sibling parent "Steven Schveighoffer" <schveiguy yahoo.com> writes:
On Mon, 04 Oct 2010 08:05:49 -0400, Steven Schveighoffer  
<schveiguy yahoo.com> wrote:

 This has been reported several times, it looks to me like it should be  
 fixed.

What I meant was, someone should fix it, not that it's already fixed :) -Steve
Oct 04 2010