diff options
Diffstat (limited to 'src/diag.rs')
| -rw-r--r-- | src/diag.rs | 10 |
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 + } +} |
