diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-04-09 14:21:48 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-04-09 14:21:59 +0100 |
| commit | 0a550c3bb4e624d76b3876e92a2bd0e235301fba (patch) | |
| tree | ee89fc17f79155f830b3413318cf3c2c76364e2d /src/main/java/org/zwobble/couscous/ast/identifiers/ExtendedIdentifier.java | |
| parent | f005b283a1b1c74c8b98499069e6afcb5e9a9ade (diff) | |
Remove MethodTypeParameter and adjust Identifier generation
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/identifiers/ExtendedIdentifier.java')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/ast/identifiers/ExtendedIdentifier.java | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/identifiers/ExtendedIdentifier.java b/src/main/java/org/zwobble/couscous/ast/identifiers/ExtendedIdentifier.java new file mode 100644 index 0000000..407c6da --- /dev/null +++ b/src/main/java/org/zwobble/couscous/ast/identifiers/ExtendedIdentifier.java @@ -0,0 +1,50 @@ +package org.zwobble.couscous.ast.identifiers; + +import static org.zwobble.couscous.util.ExtraIterables.lazyAppend; + +public class ExtendedIdentifier implements Identifier { + private final Identifier parent; + private final String part; + private final IdentifierType type; + + ExtendedIdentifier(Identifier parent, String part, IdentifierType type) { + this.parent = parent; + this.part = part; + this.type = type; + } + + @Override + public Iterable<IdentifierPart> getParts() { + return lazyAppend(parent.getParts(), new IdentifierPart(part, type)); + } + + @Override + public String toString() { + return "ExtendedIdentifier(" + + "parent=" + parent + + ", part='" + part + '\'' + + ", type=" + type + + ')'; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + ExtendedIdentifier that = (ExtendedIdentifier) o; + + if (!parent.equals(that.parent)) return false; + if (!part.equals(that.part)) return false; + return type == that.type; + + } + + @Override + public int hashCode() { + int result = parent.hashCode(); + result = 31 * result + part.hashCode(); + result = 31 * result + type.hashCode(); + return result; + } +} |
