Writing .di files duplicate storage

simendsjo simendsjo at gmail.com
Mon Aug 8 06:39:27 PDT 2011


On 08.08.2011 15:33, Steven Schveighoffer wrote:
> On Mon, 08 Aug 2011 04:01:17 -0400, simendsjo <simendsjo at gmail.com> wrote:
>
>> On 08.08.2011 09:47, Jonathan M Davis wrote:
>>> On Monday 08 August 2011 09:42:15 simendsjo wrote:
>>>> I'm writing here because I haven't been able to create a smaller
>>>> example
>>>> and I'm not sure what to search for in bugzilla.
>>>>
>>>> DMD adds a storage identifier twice when writing .di files.
>>>> This is my code:
>>>> ///
>>>> static @property isGUIThread() {
>>>> return cast(bool)IsGUIThread(false);
>>>> }
>>>>
>>>> And this is the generated .di file:
>>>> static @property @property isGUIThread()
>>>> {
>>>> return cast(bool)IsGUIThread(false);
>>>> }
>>>>
>>>> I have several other static @property fields too, but this is the only
>>>> one affected.
>>>>
>>>> Is this issue already in bugzilla? Or do I have to try to reproduce it
>>>> in a smaller testcase?
>>>
>>> http://d.puremagic.com/issues/show_bug.cgi?id=6360
>>
>> Wow! That was strange... If you look at my original property, I'm
>> missing the bool return type. I don't have auto or void as the return
>> type either. Compiling this gives no warnings!
>>
>> If I add bool as return type, the duplicate @property is dropped.
>>
>> Any idea why this even compiles? The documentation doesn't say
>> anything about @property automatically adding a return type.
>
> I don't think it's the @property, I think its the static.
>
> static generally implies auto, for example:
>
> static i = 1;
>
> will compile.
>
> -Steve

Seems you are right. Having static on functions also works without 
specifying a return type..

Is this by design, or just an implementation oddity?



More information about the Digitalmars-d-learn mailing list