From cbe91b475973a87637d4b8f34979f3c86d14a261 Mon Sep 17 00:00:00 2001 From: gnembon Date: Thu, 10 Sep 2020 00:32:36 -0300 Subject: [PATCH] unhandled `throw()` now reports as error. Fixes #446 --- src/main/java/carpet/script/Expression.java | 5 +++-- src/main/java/carpet/script/value/FunctionValue.java | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/carpet/script/Expression.java b/src/main/java/carpet/script/Expression.java index 9964deb1..72310a9f 100644 --- a/src/main/java/carpet/script/Expression.java +++ b/src/main/java/carpet/script/Expression.java @@ -19,6 +19,7 @@ import carpet.script.exception.ExpressionException; import carpet.script.exception.InternalExpressionException; import carpet.script.exception.ResolvedException; import carpet.script.exception.ReturnStatement; +import carpet.script.exception.ThrowStatement; import carpet.script.language.Arithmetic; import carpet.script.language.ControlFlow; import carpet.script.language.DataStructures; @@ -602,9 +603,9 @@ public class Expression { return exprProvider.get().evalValue(c, expectedType); } - catch (ContinueStatement | BreakStatement | ReturnStatement exc) + catch (ContinueStatement | BreakStatement | ReturnStatement | ThrowStatement exc) { - throw new ExpressionException(c, this, "Control flow functions, like continue, break, or return, should only be used in loops and functions respectively."); + throw new ExpressionException(c, this, "Control flow functions, like continue, break, throw or return, should only be used in loops, try blocks, and functions respectively."); } catch (ExitStatement exit) { diff --git a/src/main/java/carpet/script/value/FunctionValue.java b/src/main/java/carpet/script/value/FunctionValue.java index d36f3113..3762508c 100644 --- a/src/main/java/carpet/script/value/FunctionValue.java +++ b/src/main/java/carpet/script/value/FunctionValue.java @@ -122,7 +122,7 @@ public class FunctionValue extends Value implements Fluff.ILazyFunction @Override public double readDoubleNumber() { - throw new InternalExpressionException("Function value has no numeric value"); + return getNumParams(); } @Override