Thread overview
[Issue 257] New: package vars accessible from sub-modules, package funcs not
Jul 18, 2006
d-bugmail
Sep 14, 2006
Thomas Kuehne
July 18, 2006
http://d.puremagic.com/issues/show_bug.cgi?id=257

           Summary: package vars accessible from sub-modules, package funcs
                    not
           Product: D
           Version: 0.163
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Keywords: accepts-invalid
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla@digitalmars.com
        ReportedBy: jarrett.billingsley@gmail.com


-------- modules/mymod.d ----------

module modules.mymod;

package int foo;

package void bar()
{

}

-------- modules/level/test.d ----------

module modules.level.test;

import modules.mymod;

void f()
{
        foo = 1;
        bar();
}

----------------------------------------

Compiling those gives an error when trying to access bar() from test, but
accessing foo is OK.

Moreover,

-------- modules/mymod2.d ----------

module modules.mymod2; // notice it's in the same package as mymod

import modules.mymod;

void f()
{
        foo = 1;
        bar();
}

--------------------------------------

Works, as expected, just fine.

If I'm reading the spec correctly, neither foo or bar() should be accessible from test, as only modules in the same package (i.e. other modules in the "modules" package; test is in "modules.level") should be able to access them.

I'm flagging this as accepts-invalid, as you can access foo, when I don't think you should.


-- 

September 14, 2006
d-bugmail@puremagic.com schrieb am 2006-07-18:
> http://d.puremagic.com/issues/show_bug.cgi?id=257

> -------- modules/mymod.d ----------
>
> module modules.mymod;
>
> package int foo;
>
> package void bar()
> {
>
> }
>
> -------- modules/level/test.d ----------
>
> module modules.level.test;
>
> import modules.mymod;
>
> void f()
> {
>         foo = 1;
>         bar();
> }
>
> ----------------------------------------
>
> Compiling those gives an error when trying to access bar() from test, but
> accessing foo is OK.
>
> Moreover,
>
> -------- modules/mymod2.d ----------
>
> module modules.mymod2; // notice it's in the same package as mymod
>
> import modules.mymod;
>
> void f()
> {
>         foo = 1;
>         bar();
> }
>
> --------------------------------------
>
> Works, as expected, just fine.
>
> If I'm reading the spec correctly, neither foo or bar() should be accessible from test, as only modules in the same package (i.e. other modules in the "modules" package; test is in "modules.level") should be able to access them.
>
> I'm flagging this as accepts-invalid, as you can access foo, when I don't think you should.

Added to DStress as
http://dstress.kuehne.cn/nocompile/p/package_05_A.d
http://dstress.kuehne.cn/nocompile/p/package_05_B.d
( http://dstress.kuehne.cn/addon/package_05_Z.d )

Thomas


November 26, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=257


Andrei Alexandrescu <andrei@metalanguage.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
                 CC|                            |andrei@metalanguage.com
         AssignedTo|nobody@puremagic.com        |bugzilla@digitalmars.com


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------