From 37968a7c65eaf96ff0ab937f0a7827e0891c8880 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 30 Sep 2015 20:14:04 +0100 Subject: Throw error on wrong number of arguments --- .../java/org/zwobble/couscous/values/StringValue.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'src/main/java/org/zwobble/couscous/values/StringValue.java') diff --git a/src/main/java/org/zwobble/couscous/values/StringValue.java b/src/main/java/org/zwobble/couscous/values/StringValue.java index da45f02..2d4bf17 100644 --- a/src/main/java/org/zwobble/couscous/values/StringValue.java +++ b/src/main/java/org/zwobble/couscous/values/StringValue.java @@ -1,18 +1,21 @@ package org.zwobble.couscous.values; +import static java.util.Arrays.asList; + import lombok.Value; import lombok.val; @Value public class StringValue implements InterpreterValue { private static final ConcreteType TYPE = ConcreteType.builder() - .method("length", (receiver, arguments) -> new IntegerValue(receiver.value.length())) + .method("length", asList(), (receiver, arguments) -> new IntegerValue(receiver.value.length())) - .method("substring", (receiver, arguments) -> { - val startIndex = arguments.pop(IntegerValue.class); - val endIndex = arguments.pop(IntegerValue.class); - return new StringValue(receiver.value.substring(startIndex.getValue(), endIndex.getValue())); - }) + .method("substring", asList(IntegerValue.TYPE, IntegerValue.TYPE), + (receiver, arguments) -> { + val startIndex = (IntegerValue)arguments.get(0); + val endIndex = (IntegerValue)arguments.get(1); + return new StringValue(receiver.value.substring(startIndex.getValue(), endIndex.getValue())); + }) .build(); -- cgit v1.2.3