diff options
author | ccalvarin <ccalvarin@google.com> | 2017-10-10 13:50:15 +0200 |
---|---|---|
committer | Marcel Hlopko <hlopko@google.com> | 2017-10-11 09:59:55 +0200 |
commit | ca74482825e0c0ca5d119eceab74ba4292428557 (patch) | |
tree | c53085a1265c032107a52c3b179a87b6d6a77fa4 /src/main/java/com/google/devtools/common/options/OptionsParser.java | |
parent | 9725c8458d31a769371c75121061c7755bbad9c9 (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.java | 16 |
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(); + } } /** |