digitalmars.D.bugs - DMD 0.126, wow!
- "Andrew Fedoniouk" <news terrainformatica.com> Jun 08 2005
- John Reimer <brk_6502 yahoo.com> Jun 08 2005
- "Andrew Fedoniouk" <news terrainformatica.com> Jun 09 2005
- "Unknown W. Brackets" <unknown simplemachines.org> Jun 09 2005
- Stewart Gordon <smjg_1998 yahoo.com> Jun 09 2005
- =?UTF-8?B?VGhvbWFzIEvDvGhuZQ==?= Jun 11 2005
import std.stdio;
class A
{
class B:A
{
const int C = 5;
}
}
int main()
{
writef ("1 %d\n", A.B.C);
writef ("2 %d\n", A.B.B.C);
writef ("3 %d\n", A.B.B.B.C);
writef ("4 %d\n", A.B.B.B.B.C);
writef ("5 %d\n", A.B.B.B.B.B.C);
writef ("6 %d\n", A.B.B.B.B.B.B.C);
writef ("7 %d\n", A.B.B.B.B.B.B.B.C);
writef ("8 %d\n", A.B.B.B.B.B.B.B.B.C);
//.....
writef ("X %d\n",
A.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.C);
return 0;
}
Compiles and works just fine :)
Jun 08 2005
Andrew Fedoniouk wrote:import std.stdio; class A { class B:A { const int C = 5; } } int main() { writef ("1 %d\n", A.B.C); writef ("2 %d\n", A.B.B.C); writef ("3 %d\n", A.B.B.B.C); writef ("4 %d\n", A.B.B.B.B.C); writef ("5 %d\n", A.B.B.B.B.B.C); writef ("6 %d\n", A.B.B.B.B.B.B.C); writef ("7 %d\n", A.B.B.B.B.B.B.B.C); writef ("8 %d\n", A.B.B.B.B.B.B.B.B.C); //..... writef ("X %d\n", A.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.C); return 0; } Compiles and works just fine :)
LOL! You just had to try that, didn't you? Good ammo for obfuscated D. Nice to know inner classes have more than one use. ;) -JJR
Jun 08 2005
"John Reimer" <brk_6502 yahoo.com> wrote in message news:d88m0j$ii0$1 digitaldaemon.com...Andrew Fedoniouk wrote:import std.stdio; class A { class B:A { const int C = 5; } } int main() { writef ("1 %d\n", A.B.C); writef ("2 %d\n", A.B.B.C); writef ("3 %d\n", A.B.B.B.C); writef ("4 %d\n", A.B.B.B.B.C); writef ("5 %d\n", A.B.B.B.B.B.C); writef ("6 %d\n", A.B.B.B.B.B.B.C); writef ("7 %d\n", A.B.B.B.B.B.B.B.C); writef ("8 %d\n", A.B.B.B.B.B.B.B.B.C); //..... writef ("X %d\n", A.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.C); return 0; } Compiles and works just fine :)
LOL! You just had to try that, didn't you?
:) I did small compiler for subset of Java once. So I can predict typical problems more or less reliably. That was just first what came up in my mind.Good ammo for obfuscated D. Nice to know inner classes have more than one use. ;)
That inners... "Stay tuned" as they say and keep around your favorite helmet. Andrew.
Jun 09 2005
I can imagine there are some practical uses for this behavior... -[Unknown]import std.stdio; class A { class B:A { const int C = 5; } } int main() { writef ("1 %d\n", A.B.C); writef ("2 %d\n", A.B.B.C); writef ("3 %d\n", A.B.B.B.C); writef ("4 %d\n", A.B.B.B.B.C); writef ("5 %d\n", A.B.B.B.B.B.C); writef ("6 %d\n", A.B.B.B.B.B.B.C); writef ("7 %d\n", A.B.B.B.B.B.B.B.C); writef ("8 %d\n", A.B.B.B.B.B.B.B.B.C); //..... writef ("X %d\n", A.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.C); return 0; } Compiles and works just fine :)
Jun 09 2005
Andrew Fedoniouk wrote:import std.stdio; class A { class B:A { const int C = 5; } } int main() { writef ("1 %d\n", A.B.C); writef ("2 %d\n", A.B.B.C); writef ("3 %d\n", A.B.B.B.C); writef ("4 %d\n", A.B.B.B.B.C); writef ("5 %d\n", A.B.B.B.B.B.C); writef ("6 %d\n", A.B.B.B.B.B.B.C); writef ("7 %d\n", A.B.B.B.B.B.B.B.C); writef ("8 %d\n", A.B.B.B.B.B.B.B.B.C); //..... writef ("X %d\n", A.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.C); return 0; } Compiles and works just fine :)
Yes, since B is both a member of A and a subclass of A, it inherits itself. A.B.B is the same thing as A.B, and so the compiler would reduce each long expression to the previous and so on. Stewart. -- My e-mail is valid but not my primary mailbox. Please keep replies on the 'group where everyone may benefit.
Jun 09 2005
Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Andrew Fedoniouk wrote:import std.stdio; class A { class B:A { const int C = 5; } } int main() { writef ("1 %d\n", A.B.C); writef ("2 %d\n", A.B.B.C); writef ("3 %d\n", A.B.B.B.C); writef ("4 %d\n", A.B.B.B.B.C); writef ("5 %d\n", A.B.B.B.B.B.C); writef ("6 %d\n", A.B.B.B.B.B.B.C); writef ("7 %d\n", A.B.B.B.B.B.B.B.C); writef ("8 %d\n", A.B.B.B.B.B.B.B.B.C); //..... writef ("X %d\n", A.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.C); return 0; } Compiles and works just fine :)
Added to DStress as http://dstress.kuehne.cn/run/c/class_16.d Thomas
Jun 11 2005









"Andrew Fedoniouk" <news terrainformatica.com> 