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;