diff dmd/expression.c @ 486:a34078905d01

Added pragma(llvmdc, "string") for misc per-module compiler configuration, currently "string" can only be "verbose" which forces -vv for module it appears in. Reimplemented support for nested functions/class using a new approach. Added error on taking address of intrinsic. Fixed problems with the ->syntaxCopy of TypeFunction delegate exp. Removed DtoDType and replaced all uses with ->toBasetype() instead. Removed unused inplace stuff. Fixed a bunch of issues in the runtime unittests, not complete yet. Added mini tests.
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Sun, 10 Aug 2008 08:37:38 +0200
parents e19e20103119
children 6aee82889553
line wrap: on
line diff
--- a/dmd/expression.c	Sat Aug 09 09:03:52 2008 +0200
+++ b/dmd/expression.c	Sun Aug 10 08:37:38 2008 +0200
@@ -260,6 +260,10 @@
 		    {
 			//printf("rewriting e1 to %s's this\n", f->toChars());
 			n++;
+
+            // LLVMDC seems dmd misses it sometimes here :/
+            f->vthis->nestedref = 1;
+
 			e1 = new VarExp(loc, f->vthis);
 		    }
 		}
@@ -5983,6 +5987,13 @@
 	    FuncDeclaration *f = dve->var->isFuncDeclaration();
         VarDeclaration *v = dve->var->isVarDeclaration();
 
+        // LLVMDC
+        if (f && f->isIntrinsic())
+        {
+            error("cannot take the address of intrinsic function %s", e1->toChars());
+            return this;
+        }
+
 	    if (f && f->isNested())
 	    {	Expression *e;