summaryrefslogtreecommitdiff
path: root/src/main/java/moe/nea/pcj/AppendableError.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/moe/nea/pcj/AppendableError.java')
-rw-r--r--src/main/java/moe/nea/pcj/AppendableError.java21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/main/java/moe/nea/pcj/AppendableError.java b/src/main/java/moe/nea/pcj/AppendableError.java
new file mode 100644
index 0000000..6ec48fa
--- /dev/null
+++ b/src/main/java/moe/nea/pcj/AppendableError.java
@@ -0,0 +1,21 @@
+package moe.nea.pcj;
+
+import java.util.List;
+import java.util.Optional;
+
+public interface AppendableError<T extends AppendableError<T>> {
+ /**
+ * @return an optional Self with getSuppressed containing the argument
+ */
+ Optional<T> appendError(Object other);
+
+ List<T> getSuppressed();
+
+ static <T> T concatError(T left, T right) {
+ if (left instanceof AppendableError<?> appendable) {
+ var opt = (Optional<T>) appendable.appendError(right);
+ return opt.orElse(left);
+ }
+ return left;
+ }
+}