diff dmd/TupleExp.d @ 72:2e2a5c3f943a

reduced warnings by adding override to the methods think this also normalizes different line endings used all over the place
author Trass3r
date Sat, 28 Aug 2010 16:19:48 +0200
parents cab4c37afb89
children be2ab491772e
line wrap: on
line diff
--- a/dmd/TupleExp.d	Sat Aug 28 16:14:07 2010 +0200
+++ b/dmd/TupleExp.d	Sat Aug 28 16:19:48 2010 +0200
@@ -1,256 +1,256 @@
-module dmd.TupleExp;
-
-import dmd.Expression;
-import dmd.TupleDeclaration;
-import dmd.backend.elem;
-import dmd.InterState;
-import dmd.WANT;
-import dmd.Type;
-import dmd.OutBuffer;
-import dmd.Loc;
-import dmd.Scope;
-import dmd.InlineCostState;
-import dmd.IRState;
-import dmd.InlineDoState;
-import dmd.HdrGenState;
-import dmd.InlineScanState;
-import dmd.ArrayTypes;
-import dmd.TypeExp;
-import dmd.TypeTuple;
-import dmd.TOK;
-import dmd.TY;
-import dmd.Dsymbol;
-import dmd.DsymbolExp;
-import dmd.DYNCAST;
-import dmd.expression.Util;
-
-/****************************************
- * Expand tuples.
- */
-/+
-void expandTuples(Expressions exps)
-{
-    //printf("expandTuples()\n");
-    if (exps)
-    {
-	for (size_t i = 0; i < exps.dim; i++)
-	{   Expression arg = cast(Expression)exps.data[i];
-	    if (!arg)
-		continue;
-
-	    // Look for tuple with 0 members
-	    if (arg.op == TOKtype)
-	    {	TypeExp e = cast(TypeExp)arg;
-		if (e.type.toBasetype().ty == Ttuple)
-		{   TypeTuple tt = cast(TypeTuple)e.type.toBasetype();
-
-		    if (!tt.arguments || tt.arguments.dim == 0)
-		    {
-			exps.remove(i);
-			if (i == exps.dim)
-			    return;
-			i--;
-			continue;
-		    }
-		}
-	    }
-
-	    // Inline expand all the tuples
-	    while (arg.op == TOKtuple)
-	    {	TupleExp te = cast(TupleExp)arg;
-
-		exps.remove(i);		// remove arg
-		exps.insert(i, te.exps);	// replace with tuple contents
-		if (i == exps.dim)
-		    return;		// empty tuple, no more arguments
-		arg = cast(Expression)exps.data[i];
-	    }
-	}
-    }
-}
-+/
-class TupleExp : Expression
-{
-	Expressions exps;
-
-	this(Loc loc, Expressions exps)
-	{
-		super(loc, TOKtuple, TupleExp.sizeof);
-		
-		this.exps = exps;
-		this.type = null;
-	}
-
-	this(Loc loc, TupleDeclaration tup)
-	{
-		super(loc, TOKtuple, TupleExp.sizeof);
-		exps = new Expressions();
-		type = null;
-
-		exps.reserve(tup.objects.dim);
-		for (size_t i = 0; i < tup.objects.dim; i++)
-		{   
-			Object o = cast(Object)tup.objects.data[i];
-			if (auto e = cast(Expression)o)
-			{
-				e = e.syntaxCopy();
-				exps.push(cast(void*)e);
-			}
-			else if (auto s = cast(Dsymbol)o)
-			{
-				Expression e = new DsymbolExp(loc, s);
-				exps.push(cast(void*)e);
-			}
-			else if (auto t = cast(Type)o)
-			{
-				Expression e = new TypeExp(loc, t);
-				exps.push(cast(void*)e);
-			}
-			else
-			{
-				error("%s is not an expression", o.toString());
-			}
-		}
-	}
-
-	Expression syntaxCopy()
-	{
-		return new TupleExp(loc, arraySyntaxCopy(exps));
-	}
-
-	bool equals(Object o)
-	{
-		TupleExp ne;
-
-		if (this == o)
-			return 1;
-		if ((cast(Expression)o).op == TOKtuple)
-		{
-			TupleExp te = cast(TupleExp)o;
-			if (exps.dim != te.exps.dim)
-				return 0;
-			for (size_t i = 0; i < exps.dim; i++)
-			{   Expression e1 = cast(Expression)exps.data[i];
-				Expression e2 = cast(Expression)te.exps.data[i];
-
-				if (!e1.equals(e2))
-					return 0;
-			}
-			return 1;
-		}
-		return 0;
-	}
-
-	Expression semantic(Scope sc)
-	{
-		version (LOGSEMANTIC) {
-			printf("+TupleExp::semantic(%s)\n", toChars());
-		}
-		if (type)
-			return this;
-
-		// Run semantic() on each argument
-		for (size_t i = 0; i < exps.dim; i++)
-		{	Expression e = cast(Expression)exps.data[i];
-
-			e = e.semantic(sc);
-			if (!e.type)
-			{   error("%s has no value", e.toChars());
-				e.type = Type.terror;
-			}
-			exps.data[i] = cast(void *)e;
-		}
-
-		expandTuples(exps);
-		if (0 && exps.dim == 1)
-		{
-			return cast(Expression)exps.data[0];
-		}
-		type = new TypeTuple(exps);
-		type = type.semantic(loc, sc);
-		//printf("-TupleExp::semantic(%s)\n", toChars());
-		return this;
-	}
-
-	void toCBuffer(OutBuffer buf, HdrGenState* hgs)
-	{
-		buf.writestring("tuple(");
-		argsToCBuffer(buf, exps, hgs);
-		buf.writeByte(')');
-	}
-
-	void scanForNestedRef(Scope sc)
-	{
-		assert(false);
-	}
-
-	void checkEscape()
-	{
-		for (size_t i = 0; i < exps.dim; i++)
-		{   Expression e = cast(Expression)exps.data[i];
-			e.checkEscape();
-		}
-	}
-
-	bool checkSideEffect(int flag)
-	{
-		bool f = false;
-
-		for (int i = 0; i < exps.dim; i++)
-		{	Expression e = cast(Expression)exps.data[i];
-
-			f |= e.checkSideEffect(2);
-		}
-		if (flag == 0 && f == 0)
-			Expression.checkSideEffect(0);
-		return f;
-	}
-
-	Expression optimize(int result)
-	{
-		for (size_t i = 0; i < exps.dim; i++)
-		{   
-			Expression e = cast(Expression)exps.data[i];
-
-			e = e.optimize(WANTvalue | (result & WANTinterpret));
-			exps.data[i] = cast(void*)e;
-		}
-		return this;
-	}
-
-	Expression interpret(InterState istate)
-	{
-		assert(false);
-	}
-
-	Expression castTo(Scope sc, Type t)
-	{
-		assert(false);
-	}
-
-	elem* toElem(IRState* irs)
-	{
-		assert(false);
-	}
-
-	bool canThrow()
-	{
-		return arrayExpressionCanThrow(exps);
-	}
-
-	int inlineCost(InlineCostState* ics)
-	{
-		assert(false);
-	}
-
-	Expression doInline(InlineDoState ids)
-	{
-		assert(false);
-	}
-
-	Expression inlineScan(InlineScanState* iss)
-	{
-		assert(false);
-	}
-}
-
+module dmd.TupleExp;
+
+import dmd.Expression;
+import dmd.TupleDeclaration;
+import dmd.backend.elem;
+import dmd.InterState;
+import dmd.WANT;
+import dmd.Type;
+import dmd.OutBuffer;
+import dmd.Loc;
+import dmd.Scope;
+import dmd.InlineCostState;
+import dmd.IRState;
+import dmd.InlineDoState;
+import dmd.HdrGenState;
+import dmd.InlineScanState;
+import dmd.ArrayTypes;
+import dmd.TypeExp;
+import dmd.TypeTuple;
+import dmd.TOK;
+import dmd.TY;
+import dmd.Dsymbol;
+import dmd.DsymbolExp;
+import dmd.DYNCAST;
+import dmd.expression.Util;
+
+/****************************************
+ * Expand tuples.
+ */
+/+
+void expandTuples(Expressions exps)
+{
+    //printf("expandTuples()\n");
+    if (exps)
+    {
+	for (size_t i = 0; i < exps.dim; i++)
+	{   Expression arg = cast(Expression)exps.data[i];
+	    if (!arg)
+		continue;
+
+	    // Look for tuple with 0 members
+	    if (arg.op == TOKtype)
+	    {	TypeExp e = cast(TypeExp)arg;
+		if (e.type.toBasetype().ty == Ttuple)
+		{   TypeTuple tt = cast(TypeTuple)e.type.toBasetype();
+
+		    if (!tt.arguments || tt.arguments.dim == 0)
+		    {
+			exps.remove(i);
+			if (i == exps.dim)
+			    return;
+			i--;
+			continue;
+		    }
+		}
+	    }
+
+	    // Inline expand all the tuples
+	    while (arg.op == TOKtuple)
+	    {	TupleExp te = cast(TupleExp)arg;
+
+		exps.remove(i);		// remove arg
+		exps.insert(i, te.exps);	// replace with tuple contents
+		if (i == exps.dim)
+		    return;		// empty tuple, no more arguments
+		arg = cast(Expression)exps.data[i];
+	    }
+	}
+    }
+}
++/
+class TupleExp : Expression
+{
+	Expressions exps;
+
+	this(Loc loc, Expressions exps)
+	{
+		super(loc, TOKtuple, TupleExp.sizeof);
+		
+		this.exps = exps;
+		this.type = null;
+	}
+
+	this(Loc loc, TupleDeclaration tup)
+	{
+		super(loc, TOKtuple, TupleExp.sizeof);
+		exps = new Expressions();
+		type = null;
+
+		exps.reserve(tup.objects.dim);
+		for (size_t i = 0; i < tup.objects.dim; i++)
+		{   
+			Object o = cast(Object)tup.objects.data[i];
+			if (auto e = cast(Expression)o)
+			{
+				e = e.syntaxCopy();
+				exps.push(cast(void*)e);
+			}
+			else if (auto s = cast(Dsymbol)o)
+			{
+				Expression e = new DsymbolExp(loc, s);
+				exps.push(cast(void*)e);
+			}
+			else if (auto t = cast(Type)o)
+			{
+				Expression e = new TypeExp(loc, t);
+				exps.push(cast(void*)e);
+			}
+			else
+			{
+				error("%s is not an expression", o.toString());
+			}
+		}
+	}
+
+	override Expression syntaxCopy()
+	{
+		return new TupleExp(loc, arraySyntaxCopy(exps));
+	}
+
+	override bool equals(Object o)
+	{
+		TupleExp ne;
+
+		if (this == o)
+			return 1;
+		if ((cast(Expression)o).op == TOKtuple)
+		{
+			TupleExp te = cast(TupleExp)o;
+			if (exps.dim != te.exps.dim)
+				return 0;
+			for (size_t i = 0; i < exps.dim; i++)
+			{   Expression e1 = cast(Expression)exps.data[i];
+				Expression e2 = cast(Expression)te.exps.data[i];
+
+				if (!e1.equals(e2))
+					return 0;
+			}
+			return 1;
+		}
+		return 0;
+	}
+
+	override Expression semantic(Scope sc)
+	{
+		version (LOGSEMANTIC) {
+			printf("+TupleExp::semantic(%s)\n", toChars());
+		}
+		if (type)
+			return this;
+
+		// Run semantic() on each argument
+		for (size_t i = 0; i < exps.dim; i++)
+		{	Expression e = cast(Expression)exps.data[i];
+
+			e = e.semantic(sc);
+			if (!e.type)
+			{   error("%s has no value", e.toChars());
+				e.type = Type.terror;
+			}
+			exps.data[i] = cast(void *)e;
+		}
+
+		expandTuples(exps);
+		if (0 && exps.dim == 1)
+		{
+			return cast(Expression)exps.data[0];
+		}
+		type = new TypeTuple(exps);
+		type = type.semantic(loc, sc);
+		//printf("-TupleExp::semantic(%s)\n", toChars());
+		return this;
+	}
+
+	override void toCBuffer(OutBuffer buf, HdrGenState* hgs)
+	{
+		buf.writestring("tuple(");
+		argsToCBuffer(buf, exps, hgs);
+		buf.writeByte(')');
+	}
+
+	override void scanForNestedRef(Scope sc)
+	{
+		assert(false);
+	}
+
+	override void checkEscape()
+	{
+		for (size_t i = 0; i < exps.dim; i++)
+		{   Expression e = cast(Expression)exps.data[i];
+			e.checkEscape();
+		}
+	}
+
+	override bool checkSideEffect(int flag)
+	{
+		bool f = false;
+
+		for (int i = 0; i < exps.dim; i++)
+		{	Expression e = cast(Expression)exps.data[i];
+
+			f |= e.checkSideEffect(2);
+		}
+		if (flag == 0 && f == 0)
+			Expression.checkSideEffect(0);
+		return f;
+	}
+
+	override Expression optimize(int result)
+	{
+		for (size_t i = 0; i < exps.dim; i++)
+		{   
+			Expression e = cast(Expression)exps.data[i];
+
+			e = e.optimize(WANTvalue | (result & WANTinterpret));
+			exps.data[i] = cast(void*)e;
+		}
+		return this;
+	}
+
+	override Expression interpret(InterState istate)
+	{
+		assert(false);
+	}
+
+	override Expression castTo(Scope sc, Type t)
+	{
+		assert(false);
+	}
+
+	override elem* toElem(IRState* irs)
+	{
+		assert(false);
+	}
+
+	override bool canThrow()
+	{
+		return arrayExpressionCanThrow(exps);
+	}
+
+	override int inlineCost(InlineCostState* ics)
+	{
+		assert(false);
+	}
+
+	override Expression doInline(InlineDoState ids)
+	{
+		assert(false);
+	}
+
+	override Expression inlineScan(InlineScanState* iss)
+	{
+		assert(false);
+	}
+}
+