On Sunday, 21 February 2021 at 18:09:29 UTC, FeepingCreature
wrote:
On Sunday, 21 February 2021 at 18:07:49 UTC, JN wrote:
class Foo
{
}
void main()
{
Foo Foo = new Foo();
}
this kind of code compiles. Is this expected to compile?
Yes, why wouldn't it? main is a different scope than global;
you can override identifiers from global in main. And "Foo"
only exists after the declaration, so it doesn't conflict.
I was worried I hit some corner case where it compiles even
though it shouldn't. Can lead to some confusing code. I guess D
is smart enough to figure out which is a type and which is a
variable. C++ gets confused in similar situation.