Fix is uploaded.
Don Clugston wrote:
On 27 October 2010 16:50, Stephan Dilly <[email protected]> wrote:
On 27.10.2010 16:14, Don Clugston wrote:
On 27 October 2010 15:29, Stephan Dilly<[email protected]> 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.
_______________________________________________
dmd-beta mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-beta
I don't know either ;)
Does that mean that static pure opCalls wont be possible from now on ?
Your code should continue to work. It's a regression.
_______________________________________________
dmd-beta mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-beta