Thread overview
access control bug
May 02, 2005
Andrew Fedoniouk
May 02, 2005
Derek Parnell
May 03, 2005
Thomas Kuehne
May 03, 2005
Andrew Fedoniouk
May 02, 2005
three files:
/main.d
/test/test.d
/test/sub/subtest.d

---- main.d -----
import test.test;
import test.sub.subtest;

int main(char[][] args)
{
  return(test.sub.subtest.bar()) ;
}

----/test/test.d -----
module test.test;
import test.sub.subtest;

class Foo
{
  package int foo() { return 5; }
  static package int foos() { return 5; }
}

----/test/sub/subtest.d ------
module test.sub.subtest;
import test.test;

int bar()
{
  int i = Foo.foos(); // compiles fine
  Foo f = new Foo();
  int j = f.foo();      // BUG: DMD compiler reports an error: [1]
  return 4;
}
-----------------

[1] .\test\sub\subtest.d(9): class test.test.Foo member foo is not accessible

It is strange as both Foo.foos() and Foo.foo() are methods
of the same class. One is static and other is not.
Correlation of static attribute with access control attribute?




May 02, 2005
On Sun, 1 May 2005 23:36:02 -0700, Andrew Fedoniouk wrote:

> three files:
> /main.d
> /test/test.d
> /test/sub/subtest.d
> 
> ---- main.d -----
> import test.test;
> import test.sub.subtest;
> 
> int main(char[][] args)
> {
>   return(test.sub.subtest.bar()) ;
> }
> 
> ----/test/test.d -----
> module test.test;
> import test.sub.subtest;
> 
> class Foo
> {
>   package int foo() { return 5; }
>   static package int foos() { return 5; }
> }
> 
> ----/test/sub/subtest.d ------
> module test.sub.subtest;
> import test.test;
> 
> int bar()
> {
>   int i = Foo.foos(); // compiles fine
>   Foo f = new Foo();
>   int j = f.foo();      // BUG: DMD compiler reports an error: [1]
>   return 4;
> }
> -----------------
> 
> [1] .\test\sub\subtest.d(9): class test.test.Foo member foo is not accessible
> 
> It is strange as both Foo.foos() and Foo.foo() are methods
> of the same class. One is static and other is not.
> Correlation of static attribute with access control attribute?

 int i = Foo.foos(); // compiles fine
 int k = f.foos();   // Fails.

"class test.test.Foo member foos is not accessible"


-- 
Derek
Melbourne, Australia
2/05/2005 4:52:27 PM
May 03, 2005
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Andrew Fedoniouk schrieb am Sun, 1 May 2005 23:36:02 -0700:
> three files:
> /main.d
> /test/test.d
> /test/sub/subtest.d
>
> ---- main.d -----
> import test.test;
> import test.sub.subtest;
>
> int main(char[][] args)
> {
>   return(test.sub.subtest.bar()) ;
> }
>
> ----/test/test.d -----
> module test.test;
> import test.sub.subtest;
>
> class Foo
> {
>   package int foo() { return 5; }
>   static package int foos() { return 5; }
> }
>
> ----/test/sub/subtest.d ------
> module test.sub.subtest;
> import test.test;
>
> int bar()
> {
>   int i = Foo.foos(); // compiles fine
>   Foo f = new Foo();
>   int j = f.foo();      // BUG: DMD compiler reports an error: [1]
>   return 4;
> }
> -----------------
>
> [1] .\test\sub\subtest.d(9): class test.test.Foo member foo is not accessible
>
> It is strange as both Foo.foos() and Foo.foo() are methods
> of the same class. One is static and other is not.
> Correlation of static attribute with access control attribute?

Known problem: http://dstress.kuehne.cn/nocompile/package_01.d http://dstress.kuehne.cn/nocompile/package_02.d

Thomas


-----BEGIN PGP SIGNATURE-----

iD8DBQFCd81S3w+/yD4P9tIRAomuAJ9LVObpLB8x++yviP5WN+8KXM8f8gCgyGLO
SvTOZ4Ll1tyM9xxeka51bEE=
=U9Cd
-----END PGP SIGNATURE-----
May 03, 2005
Thanks, Thomas,
and sorry for increasing entropy.

Andrew.

"Thomas Kuehne" <thomas-dloop@kuehne.thisisspam.cn> wrote in message news:i3vkk2-jm3.ln1@lnews.kuehne.cn...
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Andrew Fedoniouk schrieb am Sun, 1 May 2005 23:36:02 -0700:
>> three files:
>> /main.d
>> /test/test.d
>> /test/sub/subtest.d
>>
>> ---- main.d -----
>> import test.test;
>> import test.sub.subtest;
>>
>> int main(char[][] args)
>> {
>>   return(test.sub.subtest.bar()) ;
>> }
>>
>> ----/test/test.d -----
>> module test.test;
>> import test.sub.subtest;
>>
>> class Foo
>> {
>>   package int foo() { return 5; }
>>   static package int foos() { return 5; }
>> }
>>
>> ----/test/sub/subtest.d ------
>> module test.sub.subtest;
>> import test.test;
>>
>> int bar()
>> {
>>   int i = Foo.foos(); // compiles fine
>>   Foo f = new Foo();
>>   int j = f.foo();      // BUG: DMD compiler reports an error: [1]
>>   return 4;
>> }
>> -----------------
>>
>> [1] .\test\sub\subtest.d(9): class test.test.Foo member foo is not
>> accessible
>>
>> It is strange as both Foo.foos() and Foo.foo() are methods
>> of the same class. One is static and other is not.
>> Correlation of static attribute with access control attribute?
>
> Known problem: http://dstress.kuehne.cn/nocompile/package_01.d http://dstress.kuehne.cn/nocompile/package_02.d
>
> Thomas
>
>
> -----BEGIN PGP SIGNATURE-----
>
> iD8DBQFCd81S3w+/yD4P9tIRAomuAJ9LVObpLB8x++yviP5WN+8KXM8f8gCgyGLO
> SvTOZ4Ll1tyM9xxeka51bEE=
> =U9Cd
> -----END PGP SIGNATURE-----