aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/common/options/OptionsParserImpl.java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2015-05-19 09:46:33 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2015-05-21 09:44:32 +0000
commit173ee825277d64c8a852f25b6d6e0a85917342ec (patch)
treeee1c3b375d9ba2a3643954c88ecefaf1dca87d03 /src/main/java/com/google/devtools/common/options/OptionsParserImpl.java
parentddae7544cb4b61c8f7e42d98a033a11a0f58bc57 (diff)
Add a converter for enum flags that can also be boolean.
A new converter class is added that makes it possible for enum flags to define a conversion from booleans to one of the enumeration values. This is in addition to the enumeration conversions. Fields that define such a converter can be used with the --flag and --noflag forms in addition to their --flag=value enumeration style. -- MOS_MIGRATED_REVID=93972718
Diffstat (limited to 'src/main/java/com/google/devtools/common/options/OptionsParserImpl.java')
-rw-r--r--src/main/java/com/google/devtools/common/options/OptionsParserImpl.java12
1 files changed, 7 insertions, 5 deletions
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 e339dcd7f2..4cd504b81e 100644
--- a/src/main/java/com/google/devtools/common/options/OptionsParserImpl.java
+++ b/src/main/java/com/google/devtools/common/options/OptionsParserImpl.java
@@ -421,8 +421,8 @@ class OptionsParserImpl {
}
}
- private void addListValue(Field field, String name, Object value,
- OptionPriority priority, String source, String implicitDependant, String expandedFrom) {
+ private void addListValue(Field field, Object value, OptionPriority priority, String source,
+ String implicitDependant, String expandedFrom) {
ParsedOptionEntry entry = parsedValues.get(field);
if (entry == null) {
entry = new ParsedOptionEntry(ArrayListMultimap.create(), priority, source,
@@ -609,8 +609,8 @@ class OptionsParserImpl {
// Note: The type of the list member is not known; Java introspection
// only makes it available in String form via the signature string
// for the field declaration.
- addListValue(field, originalName, convertedValue,
- priority, sourceFunction.apply(originalName), implicitDependant, expandedFrom);
+ addListValue(field, convertedValue, priority, sourceFunction.apply(originalName),
+ implicitDependant, expandedFrom);
}
}
@@ -683,7 +683,9 @@ class OptionsParserImpl {
}
static boolean isBooleanField(Field field) {
- return field.getType().equals(boolean.class) || field.getType().equals(TriState.class);
+ return field.getType().equals(boolean.class)
+ || field.getType().equals(TriState.class)
+ || findConverter(field) instanceof BoolOrEnumConverter;
}
static boolean isSpecialNullDefault(String defaultValueString, Field optionField) {