aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/common/options/OptionsParser.java10
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) {