diff options
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/InterfaceNode.java')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/ast/InterfaceNode.java | 32 |
1 files changed, 23 insertions, 9 deletions
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<FormalTypeParameterNode> typeParameters, Set<TypeName> superTypes, List<MethodNode> methods) { - return new InterfaceNode(name, superTypes, methods); + return new InterfaceNode(name, typeParameters, superTypes, methods); } private final TypeName name; + private final List<FormalTypeParameterNode> typeParameters; private final Set<TypeName> superTypes; private final List<MethodNode> methods; private InterfaceNode( TypeName name, + List<FormalTypeParameterNode> typeParameters, Set<TypeName> superTypes, List<MethodNode> methodNodes) { this.name = name; + this.typeParameters = typeParameters; this.superTypes = superTypes; methods = methodNodes; } @@ -35,6 +39,11 @@ public class InterfaceNode implements TypeNode { } @Override + public List<FormalTypeParameterNode> getTypeParameters() { + return typeParameters; + } + + @Override public Set<TypeName> getSuperTypes() { return superTypes; } @@ -50,23 +59,26 @@ public class InterfaceNode implements TypeNode { } @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; if (o == null || getClass() != o.getClass()) return false; @@ -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; |
