summaryrefslogtreecommitdiff
path: root/java/com/google/devtools/common/options/InvocationPolicyEnforcer.java
diff options
context:
space:
mode:
authorccalvarin <ccalvarin@google.com>2017-09-14 15:56:43 +0200
committerIvan Gavrilovic <gavra@google.com>2017-09-22 23:28:17 +0100
commitbf096ba935f132b5da0ad941f41897f7a7409fb3 (patch)
tree6429c1afdee36fefbde5e35fa7b3c6547ff7a2f9 /java/com/google/devtools/common/options/InvocationPolicyEnforcer.java
parent7f6f08b9b78fd02cdea4157980a42b576ae3c504 (diff)
downloaddesugar-bf096ba935f132b5da0ad941f41897f7a7409fb3.tar.gz
Consolidate the "unparsed" option value tracking.
In preparation for linking the parsed and unparsed values of options, consolidate and standardize our representation of the flag values as we received them (what is meant by "unparsed" values in this case). This was being done separately in ParseOptionResult, which, with extra context added, is being folded into UnparsedOptionValueDescription. We now track how an option was provided and where it came from for all option parsing. RELNOTES: None. PiperOrigin-RevId: 168682082 GitOrigin-RevId: 5fe8e6629e09ce44c6835d1b8f3a36bc3d69f131 Change-Id: I3964b563289ee39ab3a9a7ac496ed033459546c0
Diffstat (limited to 'java/com/google/devtools/common/options/InvocationPolicyEnforcer.java')
-rw-r--r--java/com/google/devtools/common/options/InvocationPolicyEnforcer.java38
1 files changed, 27 insertions, 11 deletions
diff --git a/java/com/google/devtools/common/options/InvocationPolicyEnforcer.java b/java/com/google/devtools/common/options/InvocationPolicyEnforcer.java
index e8a84f0..8b5ba08 100644
--- a/java/com/google/devtools/common/options/InvocationPolicyEnforcer.java
+++ b/java/com/google/devtools/common/options/InvocationPolicyEnforcer.java
@@ -51,9 +51,9 @@ public final class InvocationPolicyEnforcer {
private static final Logger logger = Logger.getLogger(InvocationPolicyEnforcer.class.getName());
- private static final Function<OptionDefinition, String> INVOCATION_POLICY_SOURCE =
- o -> "Invocation policy";
-
+ private static final String INVOCATION_POLICY_SOURCE = "Invocation policy";
+ private static final Function<OptionDefinition, String> INVOCATION_POLICY_SOURCE_FUNCTION =
+ o -> INVOCATION_POLICY_SOURCE;
@Nullable private final InvocationPolicy invocationPolicy;
/**
@@ -114,8 +114,10 @@ public final class InvocationPolicyEnforcer {
continue;
}
- OptionDescription optionDescription = parser.getOptionDescription(flagName);
- // extractOptionDefinition() will return null if the option does not exist, however
+ OptionDescription optionDescription =
+ parser.getOptionDescription(
+ flagName, OptionPriority.INVOCATION_POLICY, INVOCATION_POLICY_SOURCE);
+ // getOptionDescription() will return null if the option does not exist, however
// getOptionValueDescription() above would have thrown an IllegalArgumentException if that
// were the case.
Verify.verifyNotNull(optionDescription);
@@ -255,19 +257,28 @@ public final class InvocationPolicyEnforcer {
for (String value : setValue.getFlagValueList()) {
resultsBuilder.addAll(
parser.getExpansionOptionValueDescriptions(
- optionDescription.getOptionDefinition(), value));
+ optionDescription.getOptionDefinition(),
+ value,
+ OptionPriority.INVOCATION_POLICY,
+ INVOCATION_POLICY_SOURCE));
}
} else {
resultsBuilder.addAll(
parser.getExpansionOptionValueDescriptions(
- optionDescription.getOptionDefinition(), null));
+ optionDescription.getOptionDefinition(),
+ null,
+ OptionPriority.INVOCATION_POLICY,
+ INVOCATION_POLICY_SOURCE));
}
}
break;
case USE_DEFAULT:
resultsBuilder.addAll(
parser.getExpansionOptionValueDescriptions(
- optionDescription.getOptionDefinition(), null));
+ optionDescription.getOptionDefinition(),
+ null,
+ OptionPriority.INVOCATION_POLICY,
+ INVOCATION_POLICY_SOURCE));
break;
case ALLOW_VALUES:
// All expansions originally given to the parser have been expanded by now, so these two
@@ -307,7 +318,10 @@ public final class InvocationPolicyEnforcer {
List<FlagPolicy> expandedPolicies = new ArrayList<>();
OptionDescription originalOptionDescription =
- parser.getOptionDescription(originalPolicy.getFlagName());
+ parser.getOptionDescription(
+ originalPolicy.getFlagName(),
+ OptionPriority.INVOCATION_POLICY,
+ INVOCATION_POLICY_SOURCE);
if (originalOptionDescription == null) {
// InvocationPolicy ignores policy on non-existing flags by design, for version compatibility.
return expandedPolicies;
@@ -574,7 +588,9 @@ public final class InvocationPolicyEnforcer {
String originalValue = clearedValueDescription.getValue().toString();
String source = clearedValueDescription.getSource();
- OptionDescription desc = parser.getOptionDescription(clearedFlagName);
+ OptionDescription desc =
+ parser.getOptionDescription(
+ clearedFlagName, OptionPriority.INVOCATION_POLICY, INVOCATION_POLICY_SOURCE);
Object clearedFlagDefaultValue = null;
if (desc != null) {
clearedFlagDefaultValue = desc.getOptionDefinition().getDefaultValue();
@@ -794,7 +810,7 @@ public final class InvocationPolicyEnforcer {
parser.parseWithSourceFunction(
OptionPriority.INVOCATION_POLICY,
- INVOCATION_POLICY_SOURCE,
+ INVOCATION_POLICY_SOURCE_FUNCTION,
ImmutableList.of(String.format("--%s=%s", flag.getOptionName(), flagValue)));
}
}