From 194048eb4194d9b07f9b6b2e022cefe68f15e4d3 Mon Sep 17 00:00:00 2001
From: Joseph Rowlands <jrr1g18@soton.ac.uk>
Date: Fri, 9 Nov 2018 16:57:31 +0000
Subject: [PATCH] Added more checks

---
 src/jrr1g18/boring/nodes/IdentifierNode.java    |  5 +++++
 .../boring/nodes/UnaryOperationNode.java        | 17 +++++++++++++++++
 src/jrr1g18/boring/nodes/ValueNode.java         |  5 +++++
 3 files changed, 27 insertions(+)

diff --git a/src/jrr1g18/boring/nodes/IdentifierNode.java b/src/jrr1g18/boring/nodes/IdentifierNode.java
index 3611bae..60eff6e 100644
--- a/src/jrr1g18/boring/nodes/IdentifierNode.java
+++ b/src/jrr1g18/boring/nodes/IdentifierNode.java
@@ -17,4 +17,9 @@ public class IdentifierNode extends ASTNode {
         this.m_name = name;
     }
 
+    @Override
+    public boolean isValidType(NodeType type) {
+        return type == NodeType.IDENTIFIER;
+    }
+
 }
diff --git a/src/jrr1g18/boring/nodes/UnaryOperationNode.java b/src/jrr1g18/boring/nodes/UnaryOperationNode.java
index 0787bc3..4b2c683 100644
--- a/src/jrr1g18/boring/nodes/UnaryOperationNode.java
+++ b/src/jrr1g18/boring/nodes/UnaryOperationNode.java
@@ -1,8 +1,20 @@
 package jrr1g18.boring.nodes;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
 public class UnaryOperationNode extends ASTNode {
     private ASTNode m_operand;
 
+    private static final List<NodeType> VALID_NODES;
+    static {
+        List<NodeType> nodes = new ArrayList<>();
+        nodes.add(NodeType.UNARYMINUS);
+        nodes.add(NodeType.UNARYPLUS);
+        VALID_NODES = Collections.unmodifiableList(nodes);
+    }
+
     public UnaryOperationNode(NodeType type, ASTNode operand) {
         super(type);
         m_operand = operand;
@@ -12,4 +24,9 @@ public class UnaryOperationNode extends ASTNode {
         return m_operand;
     }
 
+    @Override
+    public boolean isValidType(NodeType type) {
+        return VALID_NODES.contains(type);
+    }
+
 }
diff --git a/src/jrr1g18/boring/nodes/ValueNode.java b/src/jrr1g18/boring/nodes/ValueNode.java
index 8ae54f8..ead0703 100644
--- a/src/jrr1g18/boring/nodes/ValueNode.java
+++ b/src/jrr1g18/boring/nodes/ValueNode.java
@@ -12,4 +12,9 @@ public class ValueNode extends ASTNode {
     public Integer getValue() {
         return m_value;
     }
+
+    @Override
+    public boolean isValidType(NodeType type) {
+        return type == NodeType.INTEGER;
+    }
 }
-- 
GitLab