diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-01-08 08:42:49 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-01-08 08:42:49 +0000 |
| commit | 0577f8637123c92fa6c1d4e27e0d2281c9a6b519 (patch) | |
| tree | edaa735a2582030b1d6da5a66eef15e90bcc40bc /src/main/java/org/zwobble/couscous/interpreter/values | |
| parent | 17072b4d14dad00acac247508e35b52c0233170b (diff) | |
Use list() to create lists of fixed size
Diffstat (limited to 'src/main/java/org/zwobble/couscous/interpreter/values')
5 files changed, 32 insertions, 24 deletions
diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java index 9bf6a51..bc3ef80 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java @@ -6,6 +6,7 @@ import org.zwobble.couscous.values.ObjectValues; import org.zwobble.couscous.values.StringValue; import static java.util.Arrays.asList; +import static org.zwobble.couscous.util.ExtraLists.list; public class BoxedIntegerInterpreterValue { public static ObjectInterpreterValue of(int value) { @@ -21,19 +22,19 @@ public class BoxedIntegerInterpreterValue { public static final ConcreteType TYPE = ConcreteType.classBuilder("java.lang.Integer") .field("value", IntegerValue.REF) - .staticMethod("parseInt", asList(StringValue.REF), + .staticMethod("parseInt", list(StringValue.REF), (environment, arguments) -> { StringInterpreterValue value = (StringInterpreterValue)arguments.get(0); return new IntegerInterpreterValue(Integer.parseInt(value.getValue())); }) - .staticMethod("valueOf", asList(IntegerValue.REF), + .staticMethod("valueOf", list(IntegerValue.REF), (environment, arguments) -> { IntegerInterpreterValue value = (IntegerInterpreterValue)arguments.get(0); return of(value); }) - .method(Operator.EQUALS.getMethodName(), asList(ObjectValues.OBJECT), + .method(Operator.EQUALS.getMethodName(), list(ObjectValues.OBJECT), (environment, arguments) -> { InterpreterValue right = arguments.getPositionalArguments().get(0); if (right.getType().getName().equals(ObjectValues.BOXED_INT)) { @@ -45,7 +46,7 @@ public class BoxedIntegerInterpreterValue { } }) - .method("toString", asList(), + .method("toString", list(), (environment, arguments) -> { IntegerInterpreterValue value = (IntegerInterpreterValue)arguments.getReceiver().getField("value"); return new StringInterpreterValue(Integer.toString(value.getValue())); diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/ConcreteType.java b/src/main/java/org/zwobble/couscous/interpreter/values/ConcreteType.java index 9c688ab..b3f9eb1 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/ConcreteType.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/ConcreteType.java @@ -1,15 +1,19 @@ package org.zwobble.couscous.interpreter.values; +import com.google.common.collect.ImmutableMap; +import org.zwobble.couscous.ast.ClassNode; +import org.zwobble.couscous.ast.FormalArgumentNode; +import org.zwobble.couscous.ast.MethodSignature; +import org.zwobble.couscous.ast.TypeName; +import org.zwobble.couscous.interpreter.*; +import org.zwobble.couscous.util.Casts; + import java.util.*; import java.util.function.BiFunction; import java.util.stream.Collectors; -import org.zwobble.couscous.ast.*; -import org.zwobble.couscous.interpreter.*; -import org.zwobble.couscous.util.Casts; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; import static java.util.stream.Collectors.toMap; +import static org.zwobble.couscous.util.ExtraLists.list; public class ConcreteType { @@ -27,7 +31,7 @@ public class ConcreteType { public static class Builder<T> { private final ImmutableMap.Builder<String, FieldValue> fields = ImmutableMap.builder(); - private MethodValue constructor = new MethodValue(ImmutableList.of(), (environment, arguments) -> InterpreterValues.UNIT); + private MethodValue constructor = new MethodValue(list(), (environment, arguments) -> InterpreterValues.UNIT); private final ImmutableMap.Builder<MethodSignature, MethodValue> methods = ImmutableMap.builder(); private final ImmutableMap.Builder<MethodSignature, StaticMethodValue> staticMethods = ImmutableMap.builder(); private final Class<T> interpreterValueType; diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java index 3e80a21..4349d5d 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java @@ -11,20 +11,21 @@ import org.zwobble.couscous.values.PrimitiveValue; import org.zwobble.couscous.values.PrimitiveValues; import static java.util.Arrays.asList; +import static org.zwobble.couscous.util.ExtraLists.list; public final class IntegerInterpreterValue implements InterpreterValue { public static final ConcreteType TYPE = ConcreteType.builder(IntegerInterpreterValue.class, IntegerValue.REF) - .method(Operator.ADD.getMethodName(), asList(IntegerValue.REF), + .method(Operator.ADD.getMethodName(), list(IntegerValue.REF), infixReturningInteger((left, right) -> left + right)) - .method(Operator.SUBTRACT.getMethodName(), asList(IntegerValue.REF), + .method(Operator.SUBTRACT.getMethodName(), list(IntegerValue.REF), infixReturningInteger((left, right) -> left - right)) - .method(Operator.MULTIPLY.getMethodName(), asList(IntegerValue.REF), + .method(Operator.MULTIPLY.getMethodName(), list(IntegerValue.REF), infixReturningInteger((left, right) -> left * right)) - .method(Operator.DIVIDE.getMethodName(), asList(IntegerValue.REF), + .method(Operator.DIVIDE.getMethodName(), list(IntegerValue.REF), infixReturningInteger((left, right) -> left / right)) - .method(Operator.MOD.getMethodName(), asList(IntegerValue.REF), + .method(Operator.MOD.getMethodName(), list(IntegerValue.REF), infixReturningInteger((left, right) -> left % right)) - .method(Operator.EQUALS.getMethodName(), asList(ObjectValues.OBJECT), + .method(Operator.EQUALS.getMethodName(), list(ObjectValues.OBJECT), (environment, arguments) -> { InterpreterValue right = arguments.getPositionalArguments().get(0); if (right instanceof IntegerInterpreterValue) { @@ -33,20 +34,20 @@ public final class IntegerInterpreterValue implements InterpreterValue { return new BooleanInterpreterValue(false); } }) - .method(Operator.EQUALS.getMethodName(), asList(IntegerValue.REF), + .method(Operator.EQUALS.getMethodName(), list(IntegerValue.REF), (environment, arguments) -> { IntegerInterpreterValue right = (IntegerInterpreterValue)arguments.getPositionalArguments().get(0); return integerEquals(arguments, right); }) - .method(Operator.NOT_EQUALS.getMethodName(), asList(IntegerValue.REF), + .method(Operator.NOT_EQUALS.getMethodName(), list(IntegerValue.REF), infixReturningBoolean((left, right) -> !left.equals(right))) - .method(Operator.GREATER_THAN.getMethodName(), asList(IntegerValue.REF), + .method(Operator.GREATER_THAN.getMethodName(), list(IntegerValue.REF), infixReturningBoolean((left, right) -> left > right)) - .method(Operator.GREATER_THAN_OR_EQUAL.getMethodName(), asList(IntegerValue.REF), + .method(Operator.GREATER_THAN_OR_EQUAL.getMethodName(), list(IntegerValue.REF), infixReturningBoolean((left, right) -> left >= right)) - .method(Operator.LESS_THAN.getMethodName(), asList(IntegerValue.REF), + .method(Operator.LESS_THAN.getMethodName(), list(IntegerValue.REF), infixReturningBoolean((left, right) -> left < right)) - .method(Operator.LESS_THAN_OR_EQUAL.getMethodName(), asList(IntegerValue.REF), + .method(Operator.LESS_THAN_OR_EQUAL.getMethodName(), list(IntegerValue.REF), infixReturningBoolean((left, right) -> left <= right)) .build(); diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/InternalCouscousInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/InternalCouscousInterpreterValue.java index 7231d0b..023dec7 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/InternalCouscousInterpreterValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/InternalCouscousInterpreterValue.java @@ -5,10 +5,11 @@ import org.zwobble.couscous.values.IntegerValue; import org.zwobble.couscous.values.ObjectValues; import static java.util.Arrays.asList; +import static org.zwobble.couscous.util.ExtraLists.list; public class InternalCouscousInterpreterValue { public static final ConcreteType TYPE = ConcreteType.classBuilder("_couscous") - .staticMethod("same", asList(ObjectValues.OBJECT, ObjectValues.OBJECT), + .staticMethod("same", list(ObjectValues.OBJECT, ObjectValues.OBJECT), (environment, arguments) -> new BooleanInterpreterValue(arguments.get(0) == arguments.get(1))) diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java index 42ee713..bbc9f6c 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java @@ -7,9 +7,10 @@ import org.zwobble.couscous.values.PrimitiveValue; import org.zwobble.couscous.values.PrimitiveValues; import org.zwobble.couscous.values.StringValue; import static java.util.Arrays.asList; +import static org.zwobble.couscous.util.ExtraLists.list; public final class StringInterpreterValue implements InterpreterValue { - public static final ConcreteType TYPE = ConcreteType.builder(StringInterpreterValue.class, StringValue.REF).method("length", asList(), (environment, arguments) -> new IntegerInterpreterValue(arguments.getReceiver().value.length())).method("substring", asList(IntegerValue.REF, IntegerValue.REF), (environment, arguments) -> { + public static final ConcreteType TYPE = ConcreteType.builder(StringInterpreterValue.class, StringValue.REF).method("length", list(), (environment, arguments) -> new IntegerInterpreterValue(arguments.getReceiver().value.length())).method("substring", list(IntegerValue.REF, IntegerValue.REF), (environment, arguments) -> { IntegerInterpreterValue startIndex = (IntegerInterpreterValue)arguments.get(0); IntegerInterpreterValue endIndex = (IntegerInterpreterValue)arguments.get(1); return new StringInterpreterValue(arguments.getReceiver().value.substring(startIndex.getValue(), endIndex.getValue())); |
