aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/interpreter
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-08 08:42:49 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-08 08:42:49 +0000
commit0577f8637123c92fa6c1d4e27e0d2281c9a6b519 (patch)
treeedaa735a2582030b1d6da5a66eef15e90bcc40bc /src/main/java/org/zwobble/couscous/interpreter
parent17072b4d14dad00acac247508e35b52c0233170b (diff)
Use list() to create lists of fixed size
Diffstat (limited to 'src/main/java/org/zwobble/couscous/interpreter')
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java9
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/ConcreteType.java16
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java25
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/InternalCouscousInterpreterValue.java3
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java3
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()));