From e1d8a9727e1a84ddfa5b38e8f8a433b7105bc6bd Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 10 Jan 2016 20:10:54 +0000 Subject: Implements casts in the interpreter --- src/main/java/org/zwobble/couscous/interpreter/Evaluator.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/main/java/org/zwobble/couscous/interpreter/Evaluator.java') diff --git a/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java b/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java index d90b78b..56ccca7 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java +++ b/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java @@ -125,7 +125,11 @@ public class Evaluator implements ExpressionNodeMapper { @Override public InterpreterValue visit(CastNode cast) { - throw new UnsupportedOperationException(); + InterpreterValue value = eval(cast.getExpression()); + if (!InterpreterTypes.isSubType(cast.getType(), value.getType())) { + throw new InvalidCast(cast.getType(), value.getType().getName()); + } + return value; } private static boolean isIntegerBox(TypeCoercionNode typeCoercion) { -- cgit v1.2.3