aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar ccalvarin <ccalvarin@google.com>2017-09-21 00:35:35 +0200
committerGravatar László Csomor <laszlocsomor@google.com>2017-09-21 11:04:27 +0200
commit4acb36c048a620abd7a0f5dff274851bd6dd9c28 (patch)
treeab02731947235a5abc881c94a86caaead7830a77
parent0e7051a55ab0396feeea7b6f9750594a02ef9c34 (diff)
Cleanup of expansion option naming
Options that expand to other options are expansion options and the options they expand to have values that were expansions. This can be a bit confusing. Removes the isExpansion() call that is somewhat ambiguous, and forces option users to explicitly check the option definition for this information. Also provide a parallel boolean function for implicit requirements, so that we stop querying for the length of the implicit requirement all over the place. RELNOTES: None. PiperOrigin-RevId: 169461566
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/AllIncompatibleChangesExpansion.java2
-rw-r--r--src/main/java/com/google/devtools/common/options/OptionDefinition.java5
-rw-r--r--src/main/java/com/google/devtools/common/options/OptionValueDescription.java4
-rw-r--r--src/main/java/com/google/devtools/common/options/OptionsParserImpl.java10
-rw-r--r--src/main/java/com/google/devtools/common/options/OptionsUsage.java2
-rw-r--r--src/main/java/com/google/devtools/common/options/ParsedOptionDescription.java9
-rw-r--r--src/test/java/com/google/devtools/common/options/OptionsParserTest.java2
7 files changed, 16 insertions, 18 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/AllIncompatibleChangesExpansion.java b/src/main/java/com/google/devtools/build/lib/runtime/AllIncompatibleChangesExpansion.java
index 849e18cc92..cf81b22c6d 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/AllIncompatibleChangesExpansion.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/AllIncompatibleChangesExpansion.java
@@ -116,7 +116,7 @@ public class AllIncompatibleChangesExpansion implements ExpansionFunction {
if (optionDefinition.allowsMultiple()) {
throw new IllegalArgumentException(prefix + "must not use the allowMultiple field");
}
- if (optionDefinition.getImplicitRequirements().length > 0) {
+ if (optionDefinition.hasImplicitRequirements()) {
throw new IllegalArgumentException(prefix + "must not use the implicitRequirements field");
}
if (!optionDefinition.getOldOptionName().equals(defaultString)) {
diff --git a/src/main/java/com/google/devtools/common/options/OptionDefinition.java b/src/main/java/com/google/devtools/common/options/OptionDefinition.java
index 38ea4bc375..40da044a48 100644
--- a/src/main/java/com/google/devtools/common/options/OptionDefinition.java
+++ b/src/main/java/com/google/devtools/common/options/OptionDefinition.java
@@ -185,6 +185,11 @@ public class OptionDefinition {
return (getOptionExpansion().length > 0 || usesExpansionFunction());
}
+ /** Returns whether the arg is an expansion option. */
+ public boolean hasImplicitRequirements() {
+ return (getImplicitRequirements().length > 0);
+ }
+
/**
* Returns whether the arg is an expansion option defined by an expansion function (and not a
* constant expansion value).
diff --git a/src/main/java/com/google/devtools/common/options/OptionValueDescription.java b/src/main/java/com/google/devtools/common/options/OptionValueDescription.java
index ca709dc7ca..8222aee12b 100644
--- a/src/main/java/com/google/devtools/common/options/OptionValueDescription.java
+++ b/src/main/java/com/google/devtools/common/options/OptionValueDescription.java
@@ -69,7 +69,7 @@ public abstract class OptionValueDescription {
return new RepeatableOptionValueDescription(option);
} else if (option.isExpansionOption()) {
return new ExpansionOptionValueDescription(option);
- } else if (option.getImplicitRequirements().length > 0) {
+ } else if (option.hasImplicitRequirements()) {
return new OptionWithImplicitRequirementsValueDescription(option);
} else if (option.isWrapperOption()) {
return new WrapperOptionValueDescription(option);
@@ -331,7 +331,7 @@ public abstract class OptionValueDescription {
private OptionWithImplicitRequirementsValueDescription(OptionDefinition optionDefinition) {
super(optionDefinition);
- if (optionDefinition.getImplicitRequirements().length == 0) {
+ if (!optionDefinition.hasImplicitRequirements()) {
throw new ConstructionException(
"Options without implicit requirements can't be tracked using "
+ "OptionWithImplicitRequirementsValueDescription");
diff --git a/src/main/java/com/google/devtools/common/options/OptionsParserImpl.java b/src/main/java/com/google/devtools/common/options/OptionsParserImpl.java
index 94568bebda..d3a3751b16 100644
--- a/src/main/java/com/google/devtools/common/options/OptionsParserImpl.java
+++ b/src/main/java/com/google/devtools/common/options/OptionsParserImpl.java
@@ -146,10 +146,10 @@ class OptionsParserImpl {
// the other options alphabetically.
.sorted(
(v1, v2) -> {
- if (v1.isImplicitRequirement()) {
- return v2.isImplicitRequirement() ? 0 : 1;
+ if (v1.getOptionDefinition().hasImplicitRequirements()) {
+ return v2.getOptionDefinition().hasImplicitRequirements() ? 0 : 1;
}
- if (v2.isImplicitRequirement()) {
+ if (v2.getOptionDefinition().hasImplicitRequirements()) {
return -1;
}
return v1.getOptionDefinition()
@@ -157,7 +157,7 @@ class OptionsParserImpl {
.compareTo(v2.getOptionDefinition().getOptionName());
})
// Ignore expansion options.
- .filter(value -> !value.isExpansion())
+ .filter(value -> !value.getOptionDefinition().isExpansionOption())
.map(
value ->
"--"
@@ -422,7 +422,7 @@ class OptionsParserImpl {
}
// Collect any implicit requirements.
- if (optionDefinition.getImplicitRequirements().length > 0) {
+ if (optionDefinition.hasImplicitRequirements()) {
implicitRequirements.put(
optionDefinition, Arrays.asList(optionDefinition.getImplicitRequirements()));
}
diff --git a/src/main/java/com/google/devtools/common/options/OptionsUsage.java b/src/main/java/com/google/devtools/common/options/OptionsUsage.java
index f481734097..68a460e8e2 100644
--- a/src/main/java/com/google/devtools/common/options/OptionsUsage.java
+++ b/src/main/java/com/google/devtools/common/options/OptionsUsage.java
@@ -146,7 +146,7 @@ class OptionsUsage {
usage.append(paragraphFill(expandsMsg.toString(), /*indent=*/ 6, /*width=*/ 80));
usage.append('\n');
}
- if (optionDefinition.getImplicitRequirements().length > 0) {
+ if (optionDefinition.hasImplicitRequirements()) {
StringBuilder requiredMsg = new StringBuilder("Using this option will also add: ");
for (String req : optionDefinition.getImplicitRequirements()) {
requiredMsg.append(req).append(" ");
diff --git a/src/main/java/com/google/devtools/common/options/ParsedOptionDescription.java b/src/main/java/com/google/devtools/common/options/ParsedOptionDescription.java
index 1c897c39d8..036ac4188b 100644
--- a/src/main/java/com/google/devtools/common/options/ParsedOptionDescription.java
+++ b/src/main/java/com/google/devtools/common/options/ParsedOptionDescription.java
@@ -82,14 +82,6 @@ public final class ParsedOptionDescription {
return tags.contains(OptionMetadataTag.HIDDEN) || tags.contains(OptionMetadataTag.INTERNAL);
}
- boolean isExpansion() {
- return optionDefinition.isExpansionOption();
- }
-
- boolean isImplicitRequirement() {
- return optionDefinition.getImplicitRequirements().length > 0;
- }
-
public String getUnconvertedValue() {
return unconvertedValue;
}
@@ -128,4 +120,5 @@ public final class ParsedOptionDescription {
}
return result.toString();
}
+
}
diff --git a/src/test/java/com/google/devtools/common/options/OptionsParserTest.java b/src/test/java/com/google/devtools/common/options/OptionsParserTest.java
index 370bb33663..e71307b272 100644
--- a/src/test/java/com/google/devtools/common/options/OptionsParserTest.java
+++ b/src/test/java/com/google/devtools/common/options/OptionsParserTest.java
@@ -1198,7 +1198,7 @@ public class OptionsParserTest {
SingleOptionValueDescription singleOptionResult = (SingleOptionValueDescription) result;
ParsedOptionDescription singleOptionInstance = singleOptionResult.getEffectiveOptionInstance();
assertThat(singleOptionInstance.getPriority()).isEqualTo(OptionPriority.COMMAND_LINE);
- assertThat(singleOptionInstance.isExpansion()).isFalse();
+ assertThat(singleOptionInstance.getOptionDefinition().isExpansionOption()).isFalse();
}
public static class ImplicitDependencyWarningOptions extends OptionsBase {