Skip to content

Commit dee1c58

Browse files
committed
Do not unnecessarily duplicate either error messages
1 parent 0b35c6a commit dee1c58

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/main/java/net/errorcraft/codecium/mixin/mojang/serialization/codecs/EitherCodecExtender.java

+12-4
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.spongepowered.asm.mixin.injection.At;
1111
import org.spongepowered.asm.mixin.injection.ModifyArg;
1212

13+
import java.util.Objects;
1314
import java.util.function.Supplier;
1415

1516
@Mixin(value = EitherCodec.class, remap = false)
@@ -22,9 +23,16 @@ public class EitherCodecExtender<F, S> {
2223
)
2324
)
2425
private <T> Supplier<String> useBetterErrorMessage(Supplier<String> message, @Local(name = "firstRead") final DataResult<Pair<Either<F, S>, T>> firstRead, @Local(name = "secondRead") final DataResult<Pair<Either<F, S>, T>> secondRead) {
25-
return () -> "Failed to decode either:\n" + StringUtil.indent(
26-
"1: " + firstRead.error().orElseThrow().message() + "\n" +
27-
"2: " + secondRead.error().orElseThrow().message()
28-
);
26+
return () -> {
27+
String first = firstRead.error().orElseThrow().message();
28+
String second = secondRead.error().orElseThrow().message();
29+
if (Objects.equals(first, second)) {
30+
return first;
31+
}
32+
return "Failed to decode either:\n" + StringUtil.indent(
33+
"1: " + first + "\n" +
34+
"2: " + second
35+
);
36+
};
2937
}
3038
}

0 commit comments

Comments
 (0)