Nicolas Cannasse 11 anos atrás
pai
commit
e843ac5d59
1 arquivos alterados com 12 adições e 2 exclusões
  1. 12 2
      hxsl/Eval.hx

+ 12 - 2
hxsl/Eval.hx

@@ -193,8 +193,18 @@ class Eval {
 			}
 			}
 		case TUnop(op, e):
 		case TUnop(op, e):
 			var e = evalExpr(e);
 			var e = evalExpr(e);
-			// todo : calc
-			TUnop(op, e);
+			switch( e.e ) {
+			case TConst(c):
+				switch( [op, c] ) {
+				case [OpNot, CBool(b)]: TConst(CBool(!b));
+				case [OpNeg, CInt(i)]: TConst(CInt( -i));
+				case [OpNeg, CFloat(f)]: TConst(CFloat( -f));
+				default:
+					TUnop(op, e);
+				}
+			default:
+				TUnop(op, e);
+			}
 		case TParenthesis(e):
 		case TParenthesis(e):
 			var e = evalExpr(e);
 			var e = evalExpr(e);
 			switch( e.e ) {
 			switch( e.e ) {