summaryrefslogtreecommitdiff
path: root/src/diag.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/diag.rs')
-rw-r--r--src/diag.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/diag.rs b/src/diag.rs
index 70a5bdaf..329e9a8a 100644
--- a/src/diag.rs
+++ b/src/diag.rs
@@ -108,3 +108,13 @@ impl<T> Trace<T> for TypResult<T> {
})
}
}
+
+/// Transform `expected X, found Y` into `expected X or A, found Y`.
+pub fn with_alternative(msg: String, alt: &str) -> String {
+ let mut parts = msg.split(", found ");
+ if let (Some(a), Some(b)) = (parts.next(), parts.next()) {
+ format!("{} or {}, found {}", a, alt, b)
+ } else {
+ msg
+ }
+}