Bug or not? Statics inside blocks

Jonathan M Davis via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Jul 28 22:27:58 PDT 2017


On Saturday, July 29, 2017 1:54:29 AM MDT Cecil Ward via Digitalmars-d-learn 
wrote:
> The snippet below failed to compile (I think) in the latest DMD -
> but I can't see the error message in the web-based editor at
> dlang.org. It certainly failed to compile under GDC 5.2.0 when
> tried out using d.godbolt.org. (Is there any chance of a later
> GDC compiler there?)
>
> Is it my bug, or a compiler bug? (name clash at link-time?):
>
> void main()
>   {
>       {
>       immutable static dstring str1 = "a";
>       }
>       {
>       immutable static dstring str1 = "b";
>       }
>   }

Well, based on the error message, I'd say that the restriction is on
purpose:

q.d(7): Error: declaration q.main.str1 is already defined in another scope
in main

The bit about "another scope" just wouldn't make sense if it weren't on
purpose, since there is normally no such restriction. That being said, I
have no idea why such a restriction would be in place. It works perfectly
well if the variables aren't static, so it's something about static that's
causing it. I would argue that it _should_ work, so I think that you should
at least open up an enhancement request, but I have no idea what the
compiler devs would say on the matter.

- Jonathan M Davis



More information about the Digitalmars-d-learn mailing list