From 95669601271985c89a10d673571dd89133f1e2e8 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 8 Mar 2016 11:01:29 +0000 Subject: Read formal type parameters --- .../org/zwobble/couscous/ast/InterfaceNode.java | 32 ++++++++++++++++------ 1 file changed, 23 insertions(+), 9 deletions(-) (limited to 'src/main/java/org/zwobble/couscous/ast/InterfaceNode.java') diff --git a/src/main/java/org/zwobble/couscous/ast/InterfaceNode.java b/src/main/java/org/zwobble/couscous/ast/InterfaceNode.java index 854728f..6353a45 100644 --- a/src/main/java/org/zwobble/couscous/ast/InterfaceNode.java +++ b/src/main/java/org/zwobble/couscous/ast/InterfaceNode.java @@ -9,22 +9,26 @@ import java.util.Set; public class InterfaceNode implements TypeNode { public static InterfaceNode declareInterface( TypeName name, + List typeParameters, Set superTypes, List methods) { - return new InterfaceNode(name, superTypes, methods); + return new InterfaceNode(name, typeParameters, superTypes, methods); } private final TypeName name; + private final List typeParameters; private final Set superTypes; private final List methods; private InterfaceNode( TypeName name, + List typeParameters, Set superTypes, List methodNodes) { this.name = name; + this.typeParameters = typeParameters; this.superTypes = superTypes; methods = methodNodes; } @@ -34,6 +38,11 @@ public class InterfaceNode implements TypeNode { return name; } + @Override + public List getTypeParameters() { + return typeParameters; + } + @Override public Set getSuperTypes() { return superTypes; @@ -49,23 +58,26 @@ public class InterfaceNode implements TypeNode { return visitor.visit(this); } - @Override - public InterfaceNode transform(NodeTransformer transformer) { - return new InterfaceNode( - transformer.transform(name), - transformer.transformTypes(superTypes), - transformer.transformMethods(methods)); - } - @Override public String toString() { return "InterfaceNode(" + "name=" + name + + ", typeParameters=" + typeParameters + ", superTypes=" + superTypes + ", methods=" + methods + ')'; } + @Override + public InterfaceNode transform(NodeTransformer transformer) { + return new InterfaceNode( + transformer.transform(name), + // TODO: transform + typeParameters, + transformer.transformTypes(superTypes), + transformer.transformMethods(methods)); + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -74,6 +86,7 @@ public class InterfaceNode implements TypeNode { InterfaceNode that = (InterfaceNode) o; if (!name.equals(that.name)) return false; + if (!typeParameters.equals(that.typeParameters)) return false; if (!superTypes.equals(that.superTypes)) return false; return methods.equals(that.methods); @@ -82,6 +95,7 @@ public class InterfaceNode implements TypeNode { @Override public int hashCode() { int result = name.hashCode(); + result = 31 * result + typeParameters.hashCode(); result = 31 * result + superTypes.hashCode(); result = 31 * result + methods.hashCode(); return result; -- cgit v1.2.3