added tertiary expression
[IRC.git] / Robust / src / IR / Tree / SemanticCheck.java
index 82c732ed29b4d459b802f25d4838fa06dc9b6adf..dac024e0bdaf8dca1b64b92ce36fc75eaf002df0 100644 (file)
@@ -395,6 +395,10 @@ public class SemanticCheck {
     case Kind.OffsetNode:
       checkOffsetNode(md, nametable, (OffsetNode)en, new TypeDescriptor(TypeDescriptor.OFFSET));
       return;
+
+    case Kind.TertiaryNode:
+      checkTertiaryNode(md, nametable, (TertiaryNode)en, td);
+      return;
     }
     throw new Error();
   }
@@ -546,6 +550,14 @@ public class SemanticCheck {
     ofn.setType(td);
   }
 
+
+  void checkTertiaryNode(Descriptor md, SymbolTable nametable, TertiaryNode tn, TypeDescriptor td) {
+    checkExpressionNode(md, nametable, tn.getCond(), new TypeDescriptor(TypeDescriptor.BOOLEAN));
+    checkExpressionNode(md, nametable, tn.getTrueExpr(), td );
+    checkExpressionNode(md, nametable, tn.getFalseExpr(), td );
+  }
+
+
   void checkAssignmentNode(Descriptor md, SymbolTable nametable, AssignmentNode an, TypeDescriptor td) {
     boolean postinc=true;
     if (an.getOperation().getBaseOp()==null||