Mercurial > projects > ldc
diff dmd2/clone.c @ 847:356e65836fb5
Merged DMD 2.021 frontend.
Removed generated files from dmd/dmd2 dirs.
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Sat, 13 Dec 2008 16:14:37 +0100 |
parents | f04dde6e882c |
children | 638d16625da2 |
line wrap: on
line diff
--- a/dmd2/clone.c Sat Dec 13 13:15:31 2008 +0100 +++ b/dmd2/clone.c Sat Dec 13 16:14:37 2008 +0100 @@ -87,6 +87,9 @@ Arguments *fparams = new Arguments; fparams->push(param); Type *ftype = new TypeFunction(fparams, handle, FALSE, LINKd); +#if STRUCTTHISREF + ((TypeFunction *)ftype)->isref = 1; +#endif fop = new FuncDeclaration(0, 0, Id::assign, STCundefined, ftype); @@ -106,12 +109,21 @@ e = new DeclarationExp(0, tmp); ec = new AssignExp(0, new VarExp(0, tmp), - new PtrExp(0, new ThisExp(0))); +#if STRUCTTHISREF + new ThisExp(0) +#else + new PtrExp(0, new ThisExp(0)) +#endif + ); ec->op = TOKblit; e = Expression::combine(e, ec); } ec = new AssignExp(0, +#if STRUCTTHISREF + new ThisExp(0), +#else new PtrExp(0, new ThisExp(0)), +#endif new IdentifierExp(0, Id::p)); ec->op = TOKblit; e = Expression::combine(e, ec); @@ -205,7 +217,9 @@ // Build *this = p; Expression *e = new ThisExp(0); +#if !STRUCTTHISREF e = new PtrExp(0, e); +#endif AssignExp *ea = new AssignExp(0, e, new IdentifierExp(0, Id::p)); ea->op = TOKblit; Statement *s = new ExpStatement(0, ea);