diff options
author | 2017-09-21 00:35:35 +0200 | |
---|---|---|
committer | 2017-09-21 11:04:27 +0200 | |
commit | 4acb36c048a620abd7a0f5dff274851bd6dd9c28 (patch) | |
tree | ab02731947235a5abc881c94a86caaead7830a77 | |
parent | 0e7051a55ab0396feeea7b6f9750594a02ef9c34 (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
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 { |