October 24, 2008
I think I may have found another bug (n. 41) in DMD:

void main() {
    { class Foo {} }
    { class Foo {} }
}

It produces:
t.o:(.rodata+0x34): multiple definition of `_Dmain3Foo6__initZ'
t.o:(.rodata+0x0): first defined here
...

-------------------
Unrelated:
I may have found a bug in std.intrinsics too, shown by this code:
http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=78637

Bye,
bearophile
October 24, 2008
Fri, 24 Oct 2008 04:02:31 -0400,
bearophile wrote:
> I think I may have found another bug (n. 41) in DMD:
> 
> void main() {
>     { class Foo {} }
>     { class Foo {} }
> }
> 
> It produces:
> t.o:(.rodata+0x34): multiple definition of `_Dmain3Foo6__initZ'
> t.o:(.rodata+0x0): first defined here
> ...

From the specs:

"A nested class is a class that is declared inside the scope of a function or another class."

It doesn't say a class can be local to a block of code.

> -------------------
> Unrelated:
> I may have found a bug in std.intrinsics too, shown by this code:
> http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=78637

Why don't you file them in bugzilla?