Mercurial > projects > ddmd
diff dmd/FuncDeclaration.d @ 98:5c859d5fbe27
and more
author | Trass3r |
---|---|
date | Tue, 31 Aug 2010 03:53:49 +0200 |
parents | df6d0f967680 |
children | d8f19d85fadb |
line wrap: on
line diff
--- a/dmd/FuncDeclaration.d Tue Aug 31 02:12:15 2010 +0200 +++ b/dmd/FuncDeclaration.d Tue Aug 31 03:53:49 2010 +0200 @@ -1473,6 +1473,7 @@ e = new AssignExp(Loc(0), e1, e); e.type = t; a.push(cast(void*)new ExpStatement(Loc(0), e)); + p.isargptr = true; } } @@ -2962,7 +2963,7 @@ foreach(FuncDeclaration fdv; foverrides) //(int i = 0; i < foverrides.dim; i++) { sf = fdv.mergeFrequire(sf); - if (fdv.frequire) + if (fdv.fdrequire) { //printf("fdv.frequire: %s\n", fdv.frequire.toChars()); /* Make the call: @@ -3006,7 +3007,7 @@ foreach (FuncDeclaration fdv; foverrides) { sf = fdv.mergeFensure(sf); - if (fdv.fensure) + if (fdv.fdensure) { //printf("fdv.fensure: %s\n", fdv.fensure.toChars()); // Make the call: __ensure(result) @@ -3214,7 +3215,8 @@ int has_arguments; //printf("FuncDeclaration.toObjFile(%p, %s.%s)\n", func, parent.toChars(), func.toChars()); -static if (false) { +static if (false) +{ //printf("line = %d\n",func.getWhere() / LINEINC); EEcontext ee = env.getEEcontext(); if (ee.EEcompile == 2) @@ -3252,7 +3254,8 @@ s = func.toSymbol(); f = s.Sfunc; -version (TARGET_WINDOS) { +version (TARGET_WINDOS) +{ /* This is done so that the 'this' pointer on the stack is the same * distance away from the function parameters, so that an overriding * function can call the nested fdensure or fdrequire of its overridden function @@ -3407,11 +3410,12 @@ for ( ; i < parameters.dim; ++i) { auto v = cast(VarDeclaration)parameters[i]; -debug { + if (v.csym) - writef("parameter '%s'\n", v.toChars()); -} - assert(!v.csym); + { + error("compiler error, parameter '%s', bugzilla 2962?", v.toChars()); + assert(false); + } params[pi + i] = v.toSymbol(); } pi += i;