aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/ast/identifiers/ExtendedIdentifier.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-04-09 14:21:48 +0100
committerMichael Williamson <mike@zwobble.org>2016-04-09 14:21:59 +0100
commit0a550c3bb4e624d76b3876e92a2bd0e235301fba (patch)
treeee89fc17f79155f830b3413318cf3c2c76364e2d /src/main/java/org/zwobble/couscous/ast/identifiers/ExtendedIdentifier.java
parentf005b283a1b1c74c8b98499069e6afcb5e9a9ade (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.java50
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;
+ }
+}