aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/zwobble/couscous/JavaProject.java4
-rw-r--r--src/main/java/org/zwobble/couscous/MapBackedProject.java26
-rw-r--r--src/main/java/org/zwobble/couscous/values/ConcreteType.java4
-rw-r--r--src/main/java/org/zwobble/couscous/values/IntegerValue.java2
-rw-r--r--src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java2
5 files changed, 30 insertions, 8 deletions
diff --git a/src/main/java/org/zwobble/couscous/JavaProject.java b/src/main/java/org/zwobble/couscous/JavaProject.java
index 49e9355..e9d2ba4 100644
--- a/src/main/java/org/zwobble/couscous/JavaProject.java
+++ b/src/main/java/org/zwobble/couscous/JavaProject.java
@@ -3,8 +3,8 @@ package org.zwobble.couscous;
import org.zwobble.couscous.values.IntegerValue;
public class JavaProject {
- public static MapBackedProject.MapBackedProjectBuilder builder() {
+ public static MapBackedProject.Builder builder() {
return MapBackedProject.builder()
- .addClass("java.lang.Integer", IntegerValue.TYPE);
+ .addClass(IntegerValue.TYPE);
}
}
diff --git a/src/main/java/org/zwobble/couscous/MapBackedProject.java b/src/main/java/org/zwobble/couscous/MapBackedProject.java
index 66b3681..f8e457f 100644
--- a/src/main/java/org/zwobble/couscous/MapBackedProject.java
+++ b/src/main/java/org/zwobble/couscous/MapBackedProject.java
@@ -4,12 +4,30 @@ import java.util.Map;
import org.zwobble.couscous.values.ConcreteType;
-import lombok.Builder;
-import lombok.Singular;
+import com.google.common.collect.ImmutableMap;
-@Builder
public class MapBackedProject implements Project {
- @Singular(value="addClass")
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public static class Builder {
+ private final ImmutableMap.Builder<String, ConcreteType<?>> classes;
+
+ private Builder() {
+ classes = ImmutableMap.builder();
+ }
+
+ public Builder addClass(ConcreteType<?> clazz) {
+ classes.put(clazz.getName(), clazz);
+ return this;
+ }
+
+ public Project build() {
+ return new MapBackedProject(classes.build());
+ }
+ }
+
private Map<String, ConcreteType<?>> classes;
public MapBackedProject(Map<String, ConcreteType<?>> classes) {
diff --git a/src/main/java/org/zwobble/couscous/values/ConcreteType.java b/src/main/java/org/zwobble/couscous/values/ConcreteType.java
index 43016d1..9b08d9e 100644
--- a/src/main/java/org/zwobble/couscous/values/ConcreteType.java
+++ b/src/main/java/org/zwobble/couscous/values/ConcreteType.java
@@ -86,6 +86,10 @@ public class ConcreteType<T> {
this.methods = methods;
this.staticMethods = staticMethods;
}
+
+ public String getName() {
+ return name;
+ }
public static <T> ConcreteType.Builder<T> builder(String name) {
return new Builder<>(name);
diff --git a/src/main/java/org/zwobble/couscous/values/IntegerValue.java b/src/main/java/org/zwobble/couscous/values/IntegerValue.java
index 76d0c59..1f8a699 100644
--- a/src/main/java/org/zwobble/couscous/values/IntegerValue.java
+++ b/src/main/java/org/zwobble/couscous/values/IntegerValue.java
@@ -7,7 +7,7 @@ import lombok.val;
@Value
public class IntegerValue implements InterpreterValue {
- public static final ConcreteType<?> TYPE = ConcreteType.<IntegerValue>builder("Integer")
+ public static final ConcreteType<?> TYPE = ConcreteType.<IntegerValue>builder("java.lang.Integer")
.staticMethod("parseInt", () -> asList(StringValue.TYPE),
(environment, arguments) -> {
val value = (StringValue)arguments.get(0);
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 e2cf1b8..b4e5be3 100644
--- a/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java
@@ -116,7 +116,7 @@ public class EvaluatorTests {
.build();
val environment = new Environment(
JavaProject.builder()
- .addClass("com.example.Program", ConcreteType.fromNode(classNode))
+ .addClass(ConcreteType.fromNode(classNode))
.build(),
ImmutableMap.of());
val result = eval(environment,