borrowck/errors: fix i18n error in delayed bug
During borrowck, the `MultiSpan` from a buffered diagnostic is cloned and used to emit a delayed bug indicating a diagnostic was buffered - when the buffered diagnostic is translated, then the cloned `MultiSpan` may contain labels which can only render with the diagnostic's arguments, but the delayed bug being emitted won't have those arguments. Adds a function which clones `MultiSpan` without also cloning the contained labels, and use this function when creating the buffered diagnostic delayed bug. Signed-off-by: David Wood <david@davidtw.co>
This commit is contained in:
parent
ced592a99b
commit
3857d9c2da
2 changed files with 12 additions and 5 deletions
|
@ -533,6 +533,14 @@ impl MultiSpan {
|
|||
pub fn has_span_labels(&self) -> bool {
|
||||
self.span_labels.iter().any(|(sp, _)| !sp.is_dummy())
|
||||
}
|
||||
|
||||
/// Clone this `MultiSpan` without keeping any of the span labels - sometimes a `MultiSpan` is
|
||||
/// to be re-used in another diagnostic, but includes `span_labels` which have translated
|
||||
/// messages. These translated messages would fail to translate without their diagnostic
|
||||
/// arguments which are unlikely to be cloned alongside the `Span`.
|
||||
pub fn clone_ignoring_labels(&self) -> Self {
|
||||
Self { primary_spans: self.primary_spans.clone(), ..MultiSpan::new() }
|
||||
}
|
||||
}
|
||||
|
||||
impl From<Span> for MultiSpan {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue