diff dmd/RealExp.d @ 129:010eb8f0e18d

further work on dmd test suite
author korDen
date Sun, 05 Sep 2010 15:32:22 +0400
parents 9e39c7de8438
children ea6325d0edd9
line wrap: on
line diff
--- a/dmd/RealExp.d	Sat Sep 04 01:33:05 2010 +0100
+++ b/dmd/RealExp.d	Sun Sep 05 15:32:22 2010 +0400
@@ -1,6 +1,7 @@
 module dmd.RealExp;
 
 import dmd.common;
+import dmd.Complex;
 import dmd.Expression;
 import dmd.backend.elem;
 import dmd.InterState;
@@ -15,13 +16,13 @@
 import dmd.Port;
 import dmd.TY;
 
+import dmd.expression.Util;
+
 import dmd.backend.dt_t;
 import dmd.backend.Util;
 import dmd.backend.TYM;
 import dmd.backend.mTY;
 
-import dmd.Complex;
-
 import std.stdio;
 
 class RealExp : Expression
@@ -38,7 +39,20 @@
 
 	override bool equals(Object o)
 	{
-		assert(false);
+		if (this is o)
+			return true;
+		
+		Expression e = cast(Expression)o;
+		if (e.op == TOKfloat64) {
+			RealExp ne = cast(RealExp)e;
+			if (type.toHeadMutable().equals(ne.type.toHeadMutable())) {
+				if (RealEquals(value, ne.value)) {
+					return true;
+				}
+			}
+		}
+		
+		return 0;
 	}
 
 	override Expression semantic(Scope sc)
@@ -120,7 +134,8 @@
 
 	override void toMangleBuffer(OutBuffer buf)
 	{
-		assert(false);
+		buf.writeByte('e');
+		realToMangleBuffer(buf, value);
 	}
 
 	override elem* toElem(IRState* irs)