diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/config/TransitiveOptionDetails.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/config/TransitiveOptionDetails.java | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/TransitiveOptionDetails.java b/src/main/java/com/google/devtools/build/lib/analysis/config/TransitiveOptionDetails.java index 6aa27b22d2..f1a2329403 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/TransitiveOptionDetails.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/TransitiveOptionDetails.java @@ -17,11 +17,10 @@ package com.google.devtools.build.lib.analysis.config; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.devtools.common.options.OptionDefinition; -import com.google.devtools.common.options.OptionDefinition.NotAnOptionException; import com.google.devtools.common.options.OptionMetadataTag; import com.google.devtools.common.options.OptionsBase; +import com.google.devtools.common.options.OptionsParser; import java.io.Serializable; -import java.lang.reflect.Field; import java.util.Map; import javax.annotation.Nullable; @@ -43,20 +42,15 @@ public final class TransitiveOptionDetails implements Serializable { ImmutableMap.Builder<String, OptionDetails> map = ImmutableMap.builder(); try { for (OptionsBase options : buildOptions) { - for (Field field : options.getClass().getFields()) { - OptionDefinition optionDefinition; - try { - optionDefinition = OptionDefinition.extractOptionDefinition(field); - } catch (NotAnOptionException e) { - // Skip non @Option fields. - continue; - } + ImmutableList<OptionDefinition> optionDefinitions = + OptionsParser.getOptionDefinitions(options.getClass()); + for (OptionDefinition optionDefinition : optionDefinitions) { if (ImmutableList.copyOf(optionDefinition.getOptionMetadataTags()) .contains(OptionMetadataTag.INTERNAL)) { // ignore internal options continue; } - Object value = field.get(options); + Object value = optionDefinition.getField().get(options); if (value == null) { if (lateBoundDefaults.containsKey(optionDefinition.getOptionName())) { value = lateBoundDefaults.get(optionDefinition.getOptionName()); |