aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-09-30 19:04:45 +0100
committerMichael Williamson <mike@zwobble.org>2015-09-30 19:04:45 +0100
commit86983c1b774277e62a0442f1a883ee6223bd61c8 (patch)
tree6cb437251b03de7bb9106a16099192bac7127419 /src/main/java/org/zwobble
parentd635b2b3870717e4af475e1349765f75878eadcf (diff)
Throw NoSuchMethod when method doesn't exist
Diffstat (limited to 'src/main/java/org/zwobble')
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/NoSuchMethod.java12
-rw-r--r--src/main/java/org/zwobble/couscous/values/StringValue.java4
2 files changed, 15 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/couscous/interpreter/NoSuchMethod.java b/src/main/java/org/zwobble/couscous/interpreter/NoSuchMethod.java
new file mode 100644
index 0000000..e69c978
--- /dev/null
+++ b/src/main/java/org/zwobble/couscous/interpreter/NoSuchMethod.java
@@ -0,0 +1,12 @@
+package org.zwobble.couscous.interpreter;
+
+import lombok.EqualsAndHashCode;
+import lombok.Value;
+
+@Value
+@EqualsAndHashCode(callSuper=false)
+public class NoSuchMethod extends InterpreterException {
+ private static final long serialVersionUID = 1L;
+
+ String methodName;
+}
diff --git a/src/main/java/org/zwobble/couscous/values/StringValue.java b/src/main/java/org/zwobble/couscous/values/StringValue.java
index 3a1a13d..9cf81ff 100644
--- a/src/main/java/org/zwobble/couscous/values/StringValue.java
+++ b/src/main/java/org/zwobble/couscous/values/StringValue.java
@@ -2,6 +2,8 @@ package org.zwobble.couscous.values;
import java.util.List;
+import org.zwobble.couscous.interpreter.NoSuchMethod;
+
import lombok.Value;
import lombok.val;
@@ -18,7 +20,7 @@ public class StringValue implements InterpreterValue {
val endIndex = (IntegerValue)arguments.get(1);
return new StringValue(value.substring(startIndex.getValue(), endIndex.getValue()));
} else {
- throw new UnsupportedOperationException();
+ throw new NoSuchMethod(methodName);
}
}
}