[Issue 325] New: Overriding members and overloading with alias causes bogus error messages in with().

Thomas Kuehne thomas-dloop at kuehne.cn
Thu Sep 7 00:59:23 PDT 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

d-bugmail at puremagic.com schrieb am 2006-09-06:
> http://d.puremagic.com/issues/show_bug.cgi?id=325

> I finally was able to reproduce this problem with a small example:
>
> // Code begin
> class Base
> {
>         private char[] myfoo;
>         private char[] mybar;
>
>         // Get/set properties that will be overridden.
>         void foo(char[] s) { myfoo = s; }
>         char[] foo() { return myfoo; }
>
>         // Get/set properties that will not be overridden.
>         void bar(char[] s) { mybar = s; }
>         char[] bar() { return mybar; }
> }
>
> class Derived: Base
> {
>         alias Base.foo foo; // Bring in Base's foo getter.
>         override void foo(char[] s) { super.foo = s; } // Override foo setter.
> }
>
> void main()
> {
>         Derived d;
>         with(d = new Derived)
>         {
>                 foo = "hi"; // Error! Due to the alias up there.
>                 d.foo = "hi"; // Works
>                 bar = "hi";
>         }
> }
> // Code end
>
> DMD 0.161 through 0.166 output: test.d(26): need 'this' to access member text
>
> I was able to find a workaround, simply put the alias after the function in the
> class instead of before.

Added to DStress as
http://dstress.kuehne.cn/run/w/with_15_A.d
http://dstress.kuehne.cn/run/w/with_15_B.d
http://dstress.kuehne.cn/run/w/with_15_C.d
http://dstress.kuehne.cn/run/w/with_15_D.d

Thomas


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

iD8DBQFE/9QJLK5blCcjpWoRAnIYAKCpTEVbTXmI9N8OnF5JZ8MZq6mxWwCgrUbq
Jh4GAQ662tCJbyKFm80A3bg=
=CsG9
-----END PGP SIGNATURE-----



More information about the Digitalmars-d-bugs mailing list