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
