diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-03-08 11:01:29 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-03-08 11:01:29 +0000 |
| commit | 95669601271985c89a10d673571dd89133f1e2e8 (patch) | |
| tree | 866d294696522f721cab97b8a1fb020945cf1d75 /src/main/java/org/zwobble/couscous/ast/InterfaceNode.java | |
| parent | c532706e0f20a07be960e4d2ca4d89d850312174 (diff) | |
Read formal type parameters
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; |
