[dmd-beta] dmd 1.065 and 2.050 beta

Don Clugston dclugston at googlemail.com
Wed Oct 27 07:14:21 PDT 2010


On 27 October 2010 15:29, Stephan Dilly <Dilly at funatics.de> wrote:
> On 27.10.2010 14:51, Stephan Dilly wrote:
>>>
>>> http://ftp.digitalmars.com/dmd1beta.zip
>>> http://ftp.digitalmars.com/dmd2beta.zip
>>
>> 1) the client still says it is version 2.049
>>
>> 2) there seems to be a regression with pure opCall methods introduced. The
>> following code used to build with dmd2049 but now does not:
>>
>>
>> struct Foo
>> {
>>    static Foo opCall(in Foo _f) pure
>>    {
>>        return Foo;
>>    }
>> }
>>
>> instead the compiler issues the following error:
>> "Error: struct bug.Foo no size yet for forward reference"
>>
>> the workaround would be to remove the pure but that is no option for my
>> codebase full of pure opCalls.
>>
>>
>> regards,
>>    Stephan
>
> Ok to be fair, this is the correct code that works in dmd2049 and does not
> in the beta:
>
> struct Foo
> {
>    static Foo opCall(in Foo _f) pure
>    {
>        return _f;
>    }
> }

That is happening because in mtype.c, line 5013, it's trying to work
out which form of purity the function is. It can't do this for a
struct, until it knows if the struct has any pointer members. This is
a problem if it's a member function.
I don't know if it really needs to determine purity level so early on.


More information about the dmd-beta mailing list