aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-08 21:11:42 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-08 21:11:42 +0000
commit785907ae2284350e0091e903825f2f717a9c29cc (patch)
treeeb051f710fa25311b22cfb2187fa6e80c1cf3953
parent7638649357e9cc2c339e743dc84b5249c6cdc0de (diff)
Replace constructor with StringInterpreterValue with static constructor
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java3
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/InterpreterValues.java4
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java18
-rw-r--r--src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java3
4 files changed, 15 insertions, 13 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 bc3ef80..cb3172d 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java
@@ -5,7 +5,6 @@ import org.zwobble.couscous.values.IntegerValue;
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 {
@@ -49,7 +48,7 @@ public class BoxedIntegerInterpreterValue {
.method("toString", list(),
(environment, arguments) -> {
IntegerInterpreterValue value = (IntegerInterpreterValue)arguments.getReceiver().getField("value");
- return new StringInterpreterValue(Integer.toString(value.getValue()));
+ return StringInterpreterValue.of(Integer.toString(value.getValue()));
})
.build();
diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/InterpreterValues.java b/src/main/java/org/zwobble/couscous/interpreter/values/InterpreterValues.java
index 37a0669..e06732a 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/InterpreterValues.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/InterpreterValues.java
@@ -15,7 +15,7 @@ public class InterpreterValues {
}
public static InterpreterValue value(String value) {
- return new StringInterpreterValue(value);
+ return StringInterpreterValue.of(value);
}
public static InterpreterValue value(PrimitiveValue value) {
@@ -27,7 +27,7 @@ public class InterpreterValues {
@Override
public InterpreterValue visit(StringValue value) {
- return new StringInterpreterValue(value.getValue());
+ return StringInterpreterValue.of(value.getValue());
}
@Override
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 b19d849..e8fd83b 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java
@@ -18,18 +18,26 @@ public final class StringInterpreterValue implements InterpreterValue {
.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()));
+ return of(arguments.getReceiver().value.substring(startIndex.getValue(), endIndex.getValue()));
})
.method("add", list(StringValue.REF), (environment, arguments) -> {
StringInterpreterValue right = (StringInterpreterValue)arguments.get(0);
- return new StringInterpreterValue(arguments.getReceiver().value + right.value);
+ return of(arguments.getReceiver().value + right.value);
})
.build();
private final String value;
-
+
+ private StringInterpreterValue(final String value) {
+ this.value = value;
+ }
+
+ public static StringInterpreterValue of(final String value) {
+ return new StringInterpreterValue(value);
+ }
+
@Override
public ConcreteType getType() {
return TYPE;
@@ -50,10 +58,6 @@ public final class StringInterpreterValue implements InterpreterValue {
throw new NoSuchField(fieldName);
}
- public StringInterpreterValue(final String value) {
- this.value = value;
- }
-
public String getValue() {
return this.value;
}
diff --git a/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java b/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java
index f9d57b8..d3c2a12 100644
--- a/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java
@@ -19,7 +19,6 @@ import org.zwobble.couscous.values.StringValue;
import com.google.common.collect.ImmutableMap;
-import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals;
import static org.zwobble.couscous.ast.AssignmentNode.assign;
import static org.zwobble.couscous.ast.AssignmentNode.assignStatement;
@@ -45,7 +44,7 @@ public class EvaluatorTests extends BackendEvalTests {
Optional.empty(),
new StackFrameBuilder().declare(arg, value("[initial value]")).build());
InterpreterValue result = eval(environment, assign(arg, literal("[updated value]")));
- assertEquals(new StringInterpreterValue("[updated value]"), result);
+ assertEquals(StringInterpreterValue.of("[updated value]"), result);
}
@Test