summaryrefslogtreecommitdiff
path: root/chapter10/src/main/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'chapter10/src/main/java/com')
-rw-r--r--chapter10/src/main/java/com/seaofnodes/simple/node/SubNode.java4
1 files changed, 4 insertions, 0 deletions
diff --git a/chapter10/src/main/java/com/seaofnodes/simple/node/SubNode.java b/chapter10/src/main/java/com/seaofnodes/simple/node/SubNode.java
index 760177d7..7be53b68 100644
--- a/chapter10/src/main/java/com/seaofnodes/simple/node/SubNode.java
+++ b/chapter10/src/main/java/com/seaofnodes/simple/node/SubNode.java
@@ -39,6 +39,10 @@ public class SubNode extends Node {
if( in(2) instanceof MinusNode minus )
return new AddNode(in(1),minus.in(1));
+ // (-x) - y is -(x+y)
+ if( in(1) instanceof MinusNode minus )
+ return new MinusNode(new AddNode(minus.in(1),in(2)).peephole());
+
return null;
}