From b5294c3dae75a036c57278aa80f7928717a1e22c Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Wed, 4 Sep 2024 19:51:46 -0700 Subject: minus is sane for high ranges --- chapter14/src/main/java/com/seaofnodes/simple/node/MinusNode.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'chapter14/src') 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); } -- cgit v1.2.3