aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/interpreter/values
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-03-09 18:11:17 +0000
committerMichael Williamson <mike@zwobble.org>2016-03-09 18:11:17 +0000
commit20dc1e124d606cf4298d5112b6d3c4f6c74e9b68 (patch)
tree47914e8b0356b2f40e3723eae650d3bb6f100dd4 /src/main/java/org/zwobble/couscous/interpreter/values
parent8ac6cb16b727b5e3d28ab89fee1d169a4f74d9a1 (diff)
Introduce Type interface
Diffstat (limited to 'src/main/java/org/zwobble/couscous/interpreter/values')
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java2
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/Callable.java5
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/InterpreterValues.java4
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/MethodValue.java8
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/StaticMethodValue.java8
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/TypeInterpreterValue.java8
6 files changed, 18 insertions, 17 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 5c477af..18d0c34 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java
@@ -38,7 +38,7 @@ public class BoxedIntegerInterpreterValue {
.method("equals", list(ObjectValues.OBJECT), BooleanValue.REF,
(environment, arguments) -> {
InterpreterValue right = arguments.getPositionalArguments().get(0);
- if (right.getType().getName().equals(ObjectValues.BOXED_INT)) {
+ if (right.getType().getType().equals(ObjectValues.BOXED_INT)) {
IntegerInterpreterValue leftValue = (IntegerInterpreterValue)arguments.getReceiver().getField("value");
IntegerInterpreterValue rightValue = (IntegerInterpreterValue)right.getField("value");
return BooleanInterpreterValue.of(leftValue.getValue() == rightValue.getValue());
diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/Callable.java b/src/main/java/org/zwobble/couscous/interpreter/values/Callable.java
index f96ba9a..c296797 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/Callable.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/Callable.java
@@ -2,8 +2,9 @@ package org.zwobble.couscous.interpreter.values;
import java.util.List;
-import org.zwobble.couscous.ast.TypeName;
+import org.zwobble.couscous.ast.types.ScalarType;
+import org.zwobble.couscous.ast.types.Type;
public interface Callable {
- List<TypeName> getArgumentTypes();
+ List<Type> getArgumentTypes();
}
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 4e8f1e6..3841d7c 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/InterpreterValues.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/InterpreterValues.java
@@ -1,6 +1,6 @@
package org.zwobble.couscous.interpreter.values;
-import org.zwobble.couscous.ast.TypeName;
+import org.zwobble.couscous.ast.types.ScalarType;
import org.zwobble.couscous.values.PrimitiveValue;
import org.zwobble.couscous.values.PrimitiveValueVisitor;
@@ -40,7 +40,7 @@ public class InterpreterValues {
}
@Override
- public InterpreterValue visitType(TypeName value) {
+ public InterpreterValue visitType(ScalarType value) {
return TypeInterpreterValue.of(value);
}
});
diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/MethodValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/MethodValue.java
index 01b2f35..eeda6f4 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/MethodValue.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/MethodValue.java
@@ -1,25 +1,25 @@
package org.zwobble.couscous.interpreter.values;
-import org.zwobble.couscous.ast.TypeName;
+import org.zwobble.couscous.ast.types.Type;
import org.zwobble.couscous.interpreter.Environment;
import java.util.List;
import java.util.function.BiFunction;
public final class MethodValue implements Callable {
- private final List<TypeName> argumentTypes;
+ private final List<Type> argumentTypes;
private final BiFunction<Environment, MethodCallArguments<InterpreterValue>, InterpreterValue> apply;
public InterpreterValue apply(Environment environment, MethodCallArguments<InterpreterValue> arguments) {
return apply.apply(environment, arguments);
}
- public MethodValue(final List<TypeName> argumentTypes, final BiFunction<Environment, MethodCallArguments<InterpreterValue>, InterpreterValue> apply) {
+ public MethodValue(final List<Type> argumentTypes, final BiFunction<Environment, MethodCallArguments<InterpreterValue>, InterpreterValue> apply) {
this.argumentTypes = argumentTypes;
this.apply = apply;
}
- public List<TypeName> getArgumentTypes() {
+ public List<Type> getArgumentTypes() {
return this.argumentTypes;
}
} \ No newline at end of file
diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/StaticMethodValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/StaticMethodValue.java
index fabf1ad..e8223ac 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/StaticMethodValue.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/StaticMethodValue.java
@@ -1,6 +1,6 @@
package org.zwobble.couscous.interpreter.values;
-import org.zwobble.couscous.ast.TypeName;
+import org.zwobble.couscous.ast.types.Type;
import org.zwobble.couscous.interpreter.Environment;
import org.zwobble.couscous.interpreter.PositionalArguments;
@@ -8,19 +8,19 @@ import java.util.List;
import java.util.function.BiFunction;
public final class StaticMethodValue implements Callable {
- private final List<TypeName> argumentTypes;
+ private final List<Type> argumentTypes;
private final BiFunction<Environment, PositionalArguments, InterpreterValue> apply;
public InterpreterValue apply(Environment environment, PositionalArguments arguments) {
return apply.apply(environment, arguments);
}
- public StaticMethodValue(final List<TypeName> argumentTypes, final BiFunction<Environment, PositionalArguments, InterpreterValue> apply) {
+ public StaticMethodValue(final List<Type> argumentTypes, final BiFunction<Environment, PositionalArguments, InterpreterValue> apply) {
this.argumentTypes = argumentTypes;
this.apply = apply;
}
- public List<TypeName> getArgumentTypes() {
+ public List<Type> getArgumentTypes() {
return this.argumentTypes;
}
} \ No newline at end of file
diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/TypeInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/TypeInterpreterValue.java
index f221ea0..a4efddb 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/TypeInterpreterValue.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/TypeInterpreterValue.java
@@ -1,6 +1,6 @@
package org.zwobble.couscous.interpreter.values;
-import org.zwobble.couscous.ast.TypeName;
+import org.zwobble.couscous.ast.types.ScalarType;
import org.zwobble.couscous.interpreter.errors.NoSuchField;
import org.zwobble.couscous.interpreter.types.InterpreterType;
import org.zwobble.couscous.interpreter.types.IntrinsicInterpreterType;
@@ -15,13 +15,13 @@ public class TypeInterpreterValue implements InterpreterValue {
.builder(TypeInterpreterValue.class, ObjectValues.CLASS)
.build();
- public static InterpreterValue of(TypeName type) {
+ public static InterpreterValue of(ScalarType type) {
return new TypeInterpreterValue(type);
}
- private final TypeName type;
+ private final ScalarType type;
- public TypeInterpreterValue(TypeName type) {
+ public TypeInterpreterValue(ScalarType type) {
this.type = type;
}