diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-10-25 17:58:56 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-10-25 17:58:56 +0000 |
| commit | 2fe122bedcf87e2317ec53d351116ade43c09336 (patch) | |
| tree | e64a489981027f2eed05273f6f039d997d468f03 /src/main/java/org/zwobble | |
| parent | 6f829beb148b7bd4c19b72e307a8b11b5c139b03 (diff) | |
Remove lombok from ClassNode
Diffstat (limited to 'src/main/java/org/zwobble')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/ast/ClassNode.java | 96 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java | 2 |
2 files changed, 90 insertions, 8 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/ClassNode.java b/src/main/java/org/zwobble/couscous/ast/ClassNode.java index d0598d8..d2c64f5 100644 --- a/src/main/java/org/zwobble/couscous/ast/ClassNode.java +++ b/src/main/java/org/zwobble/couscous/ast/ClassNode.java @@ -4,18 +4,50 @@ import java.util.List; import org.zwobble.couscous.ast.visitors.NodeVisitor; -import lombok.Value; - -@Value public class ClassNode implements Node { public static ClassNodeBuilder builder(String name) { return new ClassNodeBuilder(name); } - TypeName name; - List<FieldDeclarationNode> fields; - ConstructorNode constructor; - List<MethodNode> methods; + public static ClassNode declareClass( + TypeName name, + List<FieldDeclarationNode> fields, + ConstructorNode constructor, + List<MethodNode> methods) { + return new ClassNode(name, fields, constructor, methods); + } + + private final TypeName name; + private final List<FieldDeclarationNode> fields; + private final ConstructorNode constructor; + private final List<MethodNode> methods; + + private ClassNode( + TypeName name, + List<FieldDeclarationNode> fields, + ConstructorNode constructor, + List<MethodNode> methodNodes) { + this.name = name; + this.fields = fields; + this.constructor = constructor; + methods = methodNodes; + } + + public TypeName getName() { + return name; + } + + public List<FieldDeclarationNode> getFields() { + return fields; + } + + public ConstructorNode getConstructor() { + return constructor; + } + + public List<MethodNode> getMethods() { + return methods; + } public String getSimpleName() { return name.getSimpleName(); @@ -25,4 +57,54 @@ public class ClassNode implements Node { public void accept(NodeVisitor visitor) { visitor.visit(this); } + + @Override + public String toString() { + return "ClassNode(name=" + name + ", fields=" + fields + + ", constructor=" + constructor + ", methods=" + methods + ")"; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + + ((constructor == null) ? 0 : constructor.hashCode()); + result = prime * result + ((fields == null) ? 0 : fields.hashCode()); + result = prime * result + ((methods == null) ? 0 : methods.hashCode()); + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + ClassNode other = (ClassNode) obj; + if (constructor == null) { + if (other.constructor != null) + return false; + } else if (!constructor.equals(other.constructor)) + return false; + if (fields == null) { + if (other.fields != null) + return false; + } else if (!fields.equals(other.fields)) + return false; + if (methods == null) { + if (other.methods != null) + return false; + } else if (!methods.equals(other.methods)) + return false; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + return true; + } } diff --git a/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java b/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java index 1b8aea3..b4e3891 100644 --- a/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java +++ b/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java @@ -67,7 +67,7 @@ public class ClassNodeBuilder { } public ClassNode build() { - return new ClassNode( + return ClassNode.declareClass( name, fields.build(), constructor.orElse(constructorBuilder().build()), |
