Use Identifiers instead of Strings
The high level summary of the changes:
- use `Identifier` instead of `name` in `Keyword` and `Parameter`.
- construct `Identifier` through a factory method in case future interning is desired.
These changes are in preparation for using `Identifier` instead of `name` for environment lookups.
Closes #5304.
PiperOrigin-RevId: 199869171
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Argument.java b/src/main/java/com/google/devtools/build/lib/syntax/Argument.java
index a4d782a..09f5120 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Argument.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Argument.java
@@ -58,11 +58,18 @@
return false;
}
+ /** @deprecated Prefer {@link #getIdentifier()} instead. */
+ @Deprecated
@Nullable
public String getName() { // only for keyword arguments
return null;
}
+ @Nullable
+ public Identifier getIdentifier() {
+ return null;
+ }
+
public Expression getValue() {
return value;
}
@@ -94,16 +101,21 @@
/** keyword argument: K = Expression */
public static final class Keyword extends Passed {
- final String name;
+ final Identifier identifier;
- public Keyword(String name, Expression value) {
+ public Keyword(Identifier identifier, Expression value) {
super(value);
- this.name = name;
+ this.identifier = identifier;
}
@Override
public String getName() {
- return name;
+ return identifier.getName();
+ }
+
+ @Override
+ public Identifier getIdentifier() {
+ return identifier;
}
@Override
@@ -113,7 +125,7 @@
@Override
public void prettyPrint(Appendable buffer) throws IOException {
- buffer.append(name);
+ buffer.append(identifier.getName());
buffer.append(" = ");
value.prettyPrint(buffer);
}