diff options
Diffstat (limited to 'src/main/java/com/google/devtools/common/options')
-rw-r--r-- | src/main/java/com/google/devtools/common/options/OptionsParser.java | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/common/options/OptionsParser.java b/src/main/java/com/google/devtools/common/options/OptionsParser.java index 4eb5ce28a5..94f5745ce0 100644 --- a/src/main/java/com/google/devtools/common/options/OptionsParser.java +++ b/src/main/java/com/google/devtools/common/options/OptionsParser.java @@ -27,6 +27,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.List; import java.util.Map; @@ -429,6 +430,15 @@ public class OptionsParser implements OptionsProvider { for (Class<? extends OptionsBase> optionsClass : impl.getOptionsClasses()) { allFields.addAll(impl.getAnnotatedFieldsFor(optionsClass)); } + // Sort field for deterministic ordering + Collections.sort(allFields, new Comparator<Field>() { + @Override + public int compare(Field f1, Field f2) { + String name1 = f1.getAnnotation(Option.class).name(); + String name2 = f2.getAnnotation(Option.class).name(); + return name1.compareTo(name2); + } + }); for (Field optionField : allFields) { String category = optionField.getAnnotation(Option.class).category(); if (documentationLevel(category) == DocumentationLevel.DOCUMENTED) { |