diff dmd/DotIdExp.d @ 130:60bb0fe4563e

dmdfe 2.037 first main iteration
author Eldar Insafutdinov <e.insafutdinov@gmail.com>
date Thu, 09 Sep 2010 22:51:44 +0100
parents e28b18c23469
children 9d194c848e3a
line wrap: on
line diff
--- a/dmd/DotIdExp.d	Sun Sep 05 15:32:22 2010 +0400
+++ b/dmd/DotIdExp.d	Thu Sep 09 22:51:44 2010 +0100
@@ -56,6 +56,12 @@
 
 	override Expression semantic(Scope sc)
 	{
+		// Indicate we didn't come from CallExp::semantic()
+		return semantic(sc, 0);
+	}
+
+	Expression semantic(Scope sc, int flag)
+	{
 		Expression e;
 		Expression eleft;
 		Expression eright;
@@ -187,7 +193,7 @@
 			 * The check for 'is sds our current module' is because
 			 * the current module should have access to its own imports.
 			 */
-			Dsymbol s = ie.sds.search(loc, ident,
+			Dsymbol s = ie.sds.search(loc, ident, //0);
 				(ie.sds.isModule() && ie.sds != sc.module_) ? 1 : 0);
 			if (s)
 			{
@@ -355,7 +361,8 @@
 		else
 		{
 			e = e1.type.dotExp(sc, e1, ident);
-			e = e.semantic(sc);
+			if (!(flag && e.op == TOK.TOKdotti))	// let CallExp::semantic() handle this
+				e = e.semantic(sc);
 			return e;
 		}
 	}