diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-10-06 10:55:08 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-10-06 10:55:08 +0100 |
| commit | a7669795d1d58e4962f16272cb5e92783cf01c64 (patch) | |
| tree | 770b1810be9a3e15172be151359d85ff7240a4f4 /src/main/java/org/zwobble/couscous/interpreter | |
| parent | 92d6bef1c9df704a22a01a9e61653681e95ec073 (diff) | |
Create notion of ClassName
Diffstat (limited to 'src/main/java/org/zwobble/couscous/interpreter')
3 files changed, 13 insertions, 10 deletions
diff --git a/src/main/java/org/zwobble/couscous/interpreter/Environment.java b/src/main/java/org/zwobble/couscous/interpreter/Environment.java index 5e6e231..0c226d1 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/Environment.java +++ b/src/main/java/org/zwobble/couscous/interpreter/Environment.java @@ -4,6 +4,7 @@ import java.util.Map; import java.util.Optional; import org.zwobble.couscous.Project; +import org.zwobble.couscous.ast.ClassName; import org.zwobble.couscous.ast.VariableDeclaration; import org.zwobble.couscous.ast.VariableNode; import org.zwobble.couscous.interpreter.values.ConcreteType; @@ -46,7 +47,7 @@ public class Environment { put(variable.getDeclaration().getId(), value); } - public ConcreteType<?> findClass(String className) { + public ConcreteType<?> findClass(ClassName className) { // TODO: handle missing classes return project.findClass(className); } diff --git a/src/main/java/org/zwobble/couscous/interpreter/Interpreter.java b/src/main/java/org/zwobble/couscous/interpreter/Interpreter.java index 0c36d91..10153c8 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/Interpreter.java +++ b/src/main/java/org/zwobble/couscous/interpreter/Interpreter.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.stream.Collectors; import org.zwobble.couscous.Project; +import org.zwobble.couscous.ast.ClassName; import org.zwobble.couscous.ast.ExpressionNode; import org.zwobble.couscous.interpreter.values.InterpreterValue; @@ -22,7 +23,7 @@ public class Interpreter { this.project = project; } - public InterpreterValue run(String className, String methodName, List<InterpreterValue> arguments) { + public InterpreterValue run(ClassName className, String methodName, List<InterpreterValue> arguments) { val argumentExpressions = arguments .stream() .<ExpressionNode>map(argument -> literal(argument.toPrimitiveValue().get())) 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 b2abd2b..04156d5 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/ConcreteType.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/ConcreteType.java @@ -5,6 +5,7 @@ import java.util.Map; import java.util.function.BiFunction; import java.util.stream.Collectors; +import org.zwobble.couscous.ast.ClassName; import org.zwobble.couscous.ast.ClassNode; import org.zwobble.couscous.interpreter.Arguments; import org.zwobble.couscous.interpreter.Environment; @@ -27,9 +28,9 @@ public class ConcreteType<T> { ImmutableMap.builder(); private final ImmutableMap.Builder<String, StaticMethodValue> staticMethods = ImmutableMap.builder(); - private final String name; + private final ClassName name; - public Builder(String name) { + public Builder(ClassName name) { this.name = name; } @@ -75,12 +76,12 @@ public class ConcreteType<T> { staticMethods); } - private String name; + private ClassName name; private Map<String, MethodValue<T>> methods; private Map<String, StaticMethodValue> staticMethods; public ConcreteType( - String name, + ClassName name, Map<String, MethodValue<T>> methods, Map<String, StaticMethodValue> staticMethods) { this.name = name; @@ -88,16 +89,16 @@ public class ConcreteType<T> { this.staticMethods = staticMethods; } - public String getName() { + public ClassName getName() { return name; } public static <T> ConcreteType.Builder<T> builder(TypeReference reference) { - return new Builder<>(reference.getName()); + return builder(reference.getName()); } public static <T> ConcreteType.Builder<T> builder(String name) { - return new Builder<>(name); + return new Builder<>(ClassName.of(name)); } @SuppressWarnings("unchecked") @@ -131,7 +132,7 @@ public class ConcreteType<T> { } public TypeReference getReference() { - return typeRef(name); + return typeRef(name.getQualifiedName()); } @Override |
