aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/common/options/OptionsParser.java
diff options
context:
space:
mode:
authorGravatar ccalvarin <ccalvarin@google.com>2017-10-10 13:50:15 +0200
committerGravatar Marcel Hlopko <hlopko@google.com>2017-10-11 09:59:55 +0200
commitca74482825e0c0ca5d119eceab74ba4292428557 (patch)
treec53085a1265c032107a52c3b179a87b6d6a77fa4 /src/main/java/com/google/devtools/common/options/OptionsParser.java
parent9725c8458d31a769371c75121061c7755bbad9c9 (diff)
Clean up InvocationPolicy's use of OptionDescription.
OptionDescription is basically a hack to get the expansion data for options from outside the options parser, but it was being used at various points of invocation policy enforcement. In order to correctly track option origin, we only want to get this information once. Do it during the invocation policy expansion stage, not at enforcement, so that we track the information of the option's origin in the original invocation policy passed to the enforcer, not the expanded one. PiperOrigin-RevId: 171661669
Diffstat (limited to 'src/main/java/com/google/devtools/common/options/OptionsParser.java')
-rw-r--r--src/main/java/com/google/devtools/common/options/OptionsParser.java16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/common/options/OptionsParser.java b/src/main/java/com/google/devtools/common/options/OptionsParser.java
index 2b4bd2a3e4..25733c7179 100644
--- a/src/main/java/com/google/devtools/common/options/OptionsParser.java
+++ b/src/main/java/com/google/devtools/common/options/OptionsParser.java
@@ -275,6 +275,22 @@ public class OptionsParser implements OptionsProvider {
throws OptionsParsingException {
return expansionData.getExpansion(context);
}
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof OptionDescription) {
+ OptionDescription other = (OptionDescription) obj;
+ // Check that the option is the same and that it is in the same context (expansionData)
+ return other.optionDefinition.equals(optionDefinition)
+ && other.expansionData.equals(expansionData);
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return optionDefinition.hashCode() + expansionData.hashCode();
+ }
}
/**