aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/ast/identifiers/Identifier.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-01 20:00:02 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-01 20:01:19 +0000
commitd5a4fb60e3b62f4dc1b67c83cd62c1a264bb4a12 (patch)
treecc5e2dfaf6468370a841e41dd91285b76e6cfd2f /src/main/java/org/zwobble/couscous/ast/identifiers/Identifier.java
parent4fd8b4132fd8f49b5368b86ebdbcdb84a0bdf7d0 (diff)
Generate variable IDs without Eclipse keys
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/identifiers/Identifier.java')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/identifiers/Identifier.java44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/identifiers/Identifier.java b/src/main/java/org/zwobble/couscous/ast/identifiers/Identifier.java
new file mode 100644
index 0000000..29a33eb
--- /dev/null
+++ b/src/main/java/org/zwobble/couscous/ast/identifiers/Identifier.java
@@ -0,0 +1,44 @@
+package org.zwobble.couscous.ast.identifiers;
+
+import com.google.common.collect.ImmutableList;
+
+import java.util.List;
+
+public class Identifier {
+ public static final Identifier TOP = new Identifier(ImmutableList.of());
+
+ private final List<String> parts;
+
+ private Identifier(List<String> parts) {
+ this.parts = parts;
+ }
+
+ public Identifier extend(String name) {
+ ImmutableList.Builder<String> parts = ImmutableList.builder();
+ parts.addAll(this.parts);
+ parts.add(name);
+ return new Identifier(parts.build());
+ }
+
+ @Override
+ public String toString() {
+ return "Identifier(" +
+ "parts=" + parts +
+ ')';
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ Identifier that = (Identifier) o;
+
+ return parts.equals(that.parts);
+ }
+
+ @Override
+ public int hashCode() {
+ return parts.hashCode();
+ }
+}