From 56470c01483077849dae33f65364bad987afac7a Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 6 Oct 2015 11:02:51 +0100 Subject: Combine type reference and class name into type name --- .../couscous/interpreter/values/Callable.java | 4 +-- .../couscous/interpreter/values/ConcreteType.java | 34 +++++++++------------- .../couscous/interpreter/values/MethodValue.java | 4 +-- .../interpreter/values/StaticMethodValue.java | 4 +-- 4 files changed, 20 insertions(+), 26 deletions(-) (limited to 'src/main/java/org/zwobble/couscous/interpreter/values') 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 dc372bb..f96ba9a 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,8 @@ package org.zwobble.couscous.interpreter.values; import java.util.List; -import org.zwobble.couscous.values.TypeReference; +import org.zwobble.couscous.ast.TypeName; public interface Callable { - List getArgumentTypes(); + List getArgumentTypes(); } 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 04156d5..52cd14a 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/ConcreteType.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/ConcreteType.java @@ -5,20 +5,18 @@ 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.ast.TypeName; import org.zwobble.couscous.interpreter.Arguments; import org.zwobble.couscous.interpreter.Environment; import org.zwobble.couscous.interpreter.Executor; import org.zwobble.couscous.interpreter.NoSuchMethod; import org.zwobble.couscous.interpreter.UnexpectedValueType; import org.zwobble.couscous.interpreter.WrongNumberOfArguments; -import org.zwobble.couscous.values.TypeReference; import com.google.common.collect.ImmutableMap; import static java.util.stream.Collectors.toMap; -import static org.zwobble.couscous.values.TypeReference.typeRef; import lombok.val; @@ -28,15 +26,15 @@ public class ConcreteType { ImmutableMap.builder(); private final ImmutableMap.Builder staticMethods = ImmutableMap.builder(); - private final ClassName name; + private final TypeName name; - public Builder(ClassName name) { + public Builder(TypeName name) { this.name = name; } public Builder method( String name, - List argumentsTypes, + List argumentsTypes, BiFunction method) { methods.put(name, new MethodValue(argumentsTypes, method)); return this; @@ -44,7 +42,7 @@ public class ConcreteType { public Builder staticMethod( String name, - List argumentsTypes, + List argumentsTypes, BiFunction method) { staticMethods.put(name, new StaticMethodValue(argumentsTypes, method)); return this; @@ -62,7 +60,7 @@ public class ConcreteType { .collect(toMap( method -> method.getName(), method -> { - List argumentTypes = method.getArguments() + List argumentTypes = method.getArguments() .stream() .map(arg -> arg.getType()) .collect(Collectors.toList()); @@ -76,12 +74,12 @@ public class ConcreteType { staticMethods); } - private ClassName name; + private TypeName name; private Map> methods; private Map staticMethods; public ConcreteType( - ClassName name, + TypeName name, Map> methods, Map staticMethods) { this.name = name; @@ -89,16 +87,16 @@ public class ConcreteType { this.staticMethods = staticMethods; } - public ClassName getName() { + public TypeName getName() { return name; } - public static ConcreteType.Builder builder(TypeReference reference) { - return builder(reference.getName()); + public static ConcreteType.Builder builder(TypeName reference) { + return new Builder<>(reference); } public static ConcreteType.Builder builder(String name) { - return new Builder<>(ClassName.of(name)); + return builder(TypeName.of(name)); } @SuppressWarnings("unchecked") @@ -124,17 +122,13 @@ public class ConcreteType { for (int index = 0; index < arguments.size(); index++) { val formalArgumentType = method.getArgumentTypes().get(index); val actualArgumentType = arguments.get(index).getType(); - if (!formalArgumentType.equals(actualArgumentType.getReference())) { - throw new UnexpectedValueType(formalArgumentType, actualArgumentType.getReference()); + if (!formalArgumentType.equals(actualArgumentType.getName())) { + throw new UnexpectedValueType(formalArgumentType, actualArgumentType.getName()); } } return method; } - public TypeReference getReference() { - return typeRef(name.getQualifiedName()); - } - @Override public String toString() { return "ConcreteType<" + name + ">"; 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 ea76870..f2e2cc1 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/MethodValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/MethodValue.java @@ -3,8 +3,8 @@ package org.zwobble.couscous.interpreter.values; import java.util.List; import java.util.function.BiFunction; +import org.zwobble.couscous.ast.TypeName; import org.zwobble.couscous.interpreter.Arguments; -import org.zwobble.couscous.values.TypeReference; import lombok.AccessLevel; import lombok.Getter; @@ -12,7 +12,7 @@ import lombok.Value; @Value public class MethodValue implements Callable { - List argumentTypes; + List argumentTypes; @Getter(value=AccessLevel.NONE) BiFunction apply; 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 21697b1..4754d80 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/StaticMethodValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/StaticMethodValue.java @@ -3,9 +3,9 @@ package org.zwobble.couscous.interpreter.values; import java.util.List; import java.util.function.BiFunction; +import org.zwobble.couscous.ast.TypeName; import org.zwobble.couscous.interpreter.Arguments; import org.zwobble.couscous.interpreter.Environment; -import org.zwobble.couscous.values.TypeReference; import lombok.AccessLevel; import lombok.Getter; @@ -13,7 +13,7 @@ import lombok.Value; @Value public class StaticMethodValue implements Callable { - List argumentTypes; + List argumentTypes; @Getter(value=AccessLevel.NONE) BiFunction apply; -- cgit v1.2.3