summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorccalvarin <ccalvarin@google.com>2017-09-21 00:35:35 +0200
committerIvan Gavrilovic <gavra@google.com>2017-09-22 23:29:04 +0100
commit2c366b859ba2c84184e38450786e33368c9c39c2 (patch)
tree8cb963b031b0f9746b5f30396e6960e5b0209b57
parent40ea7bc3d38f6e385f7fb8bd1122667b2cadb5e8 (diff)
downloaddesugar-2c366b859ba2c84184e38450786e33368c9c39c2.tar.gz
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 GitOrigin-RevId: 4acb36c048a620abd7a0f5dff274851bd6dd9c28 Change-Id: I75068dceefa40f56201d3b6817d551741137085d
-rw-r--r--java/com/google/devtools/common/options/OptionDefinition.java5
-rw-r--r--java/com/google/devtools/common/options/OptionValueDescription.java4
-rw-r--r--java/com/google/devtools/common/options/OptionsParserImpl.java10
-rw-r--r--java/com/google/devtools/common/options/OptionsUsage.java2
-rw-r--r--java/com/google/devtools/common/options/ParsedOptionDescription.java9
5 files changed, 14 insertions, 16 deletions
diff --git a/java/com/google/devtools/common/options/OptionDefinition.java b/java/com/google/devtools/common/options/OptionDefinition.java
index 38ea4bc..40da044 100644
--- a/java/com/google/devtools/common/options/OptionDefinition.java
+++ b/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/java/com/google/devtools/common/options/OptionValueDescription.java b/java/com/google/devtools/common/options/OptionValueDescription.java
index ca709dc..8222aee 100644
--- a/java/com/google/devtools/common/options/OptionValueDescription.java
+++ b/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/java/com/google/devtools/common/options/OptionsParserImpl.java b/java/com/google/devtools/common/options/OptionsParserImpl.java
index 94568be..d3a3751 100644
--- a/java/com/google/devtools/common/options/OptionsParserImpl.java
+++ b/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/java/com/google/devtools/common/options/OptionsUsage.java b/java/com/google/devtools/common/options/OptionsUsage.java
index f481734..68a460e 100644
--- a/java/com/google/devtools/common/options/OptionsUsage.java
+++ b/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/java/com/google/devtools/common/options/ParsedOptionDescription.java b/java/com/google/devtools/common/options/ParsedOptionDescription.java
index 1c897c3..036ac41 100644
--- a/java/com/google/devtools/common/options/ParsedOptionDescription.java
+++ b/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();
}
+
}