span: move MultiSpan
`MultiSpan` contains labels, which are more complicated with the introduction of diagnostic translation and will use types from `rustc_errors` - however, `rustc_errors` depends on `rustc_span` so `rustc_span` cannot use types like `DiagnosticMessage` without dependency cycles. Introduce a new `rustc_error_messages` crate that can contain `DiagnosticMessage` and `MultiSpan`. Signed-off-by: David Wood <david.wood@huawei.com>
This commit is contained in:
parent
8c684563a5
commit
c45f29595d
66 changed files with 354 additions and 293 deletions
|
@ -7,11 +7,11 @@ use rustc_ast::tokenstream::TokenStream;
|
|||
use rustc_ast::visit::{self, Visitor};
|
||||
use rustc_ast::{token, BlockCheckMode, UnsafeSource};
|
||||
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
||||
use rustc_errors::{pluralize, Applicability, PResult};
|
||||
use rustc_errors::{pluralize, Applicability, MultiSpan, PResult};
|
||||
use rustc_expand::base::{self, *};
|
||||
use rustc_parse_format as parse;
|
||||
use rustc_span::symbol::{sym, Ident, Symbol};
|
||||
use rustc_span::{InnerSpan, MultiSpan, Span};
|
||||
use rustc_span::{InnerSpan, Span};
|
||||
use smallvec::SmallVec;
|
||||
|
||||
use std::borrow::Cow;
|
||||
|
@ -446,7 +446,9 @@ impl<'a, 'b> Context<'a, 'b> {
|
|||
.iter()
|
||||
.filter(|fmt| fmt.precision_span.is_some())
|
||||
.count();
|
||||
e.span_label(span, &format!(
|
||||
e.span_label(
|
||||
span,
|
||||
&format!(
|
||||
"this precision flag adds an extra required argument at position {}, \
|
||||
which is why there {} expected",
|
||||
pos,
|
||||
|
@ -455,7 +457,8 @@ impl<'a, 'b> Context<'a, 'b> {
|
|||
} else {
|
||||
format!("are {} arguments", count)
|
||||
},
|
||||
));
|
||||
),
|
||||
);
|
||||
if let Some(arg) = self.args.get(pos) {
|
||||
e.span_label(
|
||||
arg.span,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue