Mercurial > projects > ddmd
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)