diff --git a/java_tools/enum2string.jar b/java_tools/enum2string.jar index 11a35b7a90..0b872b5932 100644 Binary files a/java_tools/enum2string.jar and b/java_tools/enum2string.jar differ diff --git a/java_tools/enum_to_string/src/main/java/com/rusefi/EnumsReader.java b/java_tools/enum_to_string/src/main/java/com/rusefi/EnumsReader.java index c1c456de2b..c6a69c1eb8 100644 --- a/java_tools/enum_to_string/src/main/java/com/rusefi/EnumsReader.java +++ b/java_tools/enum_to_string/src/main/java/com/rusefi/EnumsReader.java @@ -17,9 +17,16 @@ public class EnumsReader { * core implementation sorts by name, we need special considerations to sort by value */ @NotNull - static List getSortedByOrder(VariableRegistry registry, Map brain_pin_e) { + static List getSortedByOrder(VariableRegistry registry, Map enumValues) { + Set ids = new TreeSet<>(); + for (Value value : enumValues.values()) { + boolean isUniqueId = ids.add(value.getIntValueMaybeResolve(registry)); + if (!isUniqueId) + throw new IllegalArgumentException("Ordinal duplication? " + value); + } + Set byOrdinal = new TreeSet<>(Comparator.comparingInt(value -> value.getIntValueMaybeResolve(registry))); - byOrdinal.addAll(brain_pin_e.values()); + byOrdinal.addAll(enumValues.values()); return new ArrayList<>(byOrdinal); } diff --git a/java_tools/enum_to_string/src/main/java/com/rusefi/ToJavaEnum.java b/java_tools/enum_to_string/src/main/java/com/rusefi/ToJavaEnum.java index f7a68a88d8..8f876c5952 100644 --- a/java_tools/enum_to_string/src/main/java/com/rusefi/ToJavaEnum.java +++ b/java_tools/enum_to_string/src/main/java/com/rusefi/ToJavaEnum.java @@ -50,7 +50,7 @@ public class ToJavaEnum { for (Value value : sorted) { int numericValue = value.getIntValueMaybeResolve(registry); if (index != numericValue && !value.getName().startsWith("Force_4_bytes_size")) - throw new IllegalStateException(numericValue + " instead of " + index + " in " + value); + throw new IllegalStateException("Got explicit ordinal " + numericValue + " instead of ordinal " + index + " in " + value); sb.append("\t" + value.getName() + ",\n"); index++; }