summaryrefslogtreecommitdiff
path: root/chapter14/src/main/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'chapter14/src/main/java/com')
-rw-r--r--chapter14/src/main/java/com/seaofnodes/simple/node/MinusNode.java4
1 files changed, 3 insertions, 1 deletions
diff --git a/chapter14/src/main/java/com/seaofnodes/simple/node/MinusNode.java b/chapter14/src/main/java/com/seaofnodes/simple/node/MinusNode.java
index 6e3b82e9..8a2c9406 100644
--- a/chapter14/src/main/java/com/seaofnodes/simple/node/MinusNode.java
+++ b/chapter14/src/main/java/com/seaofnodes/simple/node/MinusNode.java
@@ -20,8 +20,10 @@ public class MinusNode extends Node {
@Override
public Type compute() {
- if( in(1)._type instanceof TypeInteger i0 )
+ if( in(1)._type instanceof TypeInteger i0 ) {
+ if( i0.isHigh() ) return TypeInteger.TOP;
return i0==TypeInteger.BOT ? TypeInteger.BOT : TypeInteger.make(-i0._max,-i0._min);
+ }
return TypeInteger.TOP.meet(in(1)._type);
}