mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-22 03:44:24 +00:00
Migrate limit error
This commit is contained in:
parent
00cd965046
commit
b37e645d80
@ -11,3 +11,7 @@ middle_conflict_types =
|
||||
|
||||
middle_previous_use_here =
|
||||
previous use here
|
||||
|
||||
middle_limit_invalid =
|
||||
`limit` must be a non-negative integer
|
||||
.label = {$error_str}
|
||||
|
@ -38,3 +38,13 @@ pub enum TypeMismatchReason {
|
||||
span: Span,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(SessionDiagnostic)]
|
||||
#[diag(middle::limit_invalid)]
|
||||
pub struct LimitInvalid<'a> {
|
||||
#[primary_span]
|
||||
pub span: Span,
|
||||
#[label]
|
||||
pub value_span: Span,
|
||||
pub error_str: &'a str,
|
||||
}
|
||||
|
@ -10,6 +10,7 @@
|
||||
//! just peeks and looks for that attribute.
|
||||
|
||||
use crate::bug;
|
||||
use crate::error::LimitInvalid;
|
||||
use crate::ty;
|
||||
use rustc_ast::Attribute;
|
||||
use rustc_session::Session;
|
||||
@ -56,9 +57,6 @@ fn get_limit(krate_attrs: &[Attribute], sess: &Session, name: Symbol, default: u
|
||||
match s.as_str().parse() {
|
||||
Ok(n) => return Limit::new(n),
|
||||
Err(e) => {
|
||||
let mut err =
|
||||
sess.struct_span_err(attr.span, "`limit` must be a non-negative integer");
|
||||
|
||||
let value_span = attr
|
||||
.meta()
|
||||
.and_then(|meta| meta.name_value_literal_span())
|
||||
@ -74,9 +72,7 @@ fn get_limit(krate_attrs: &[Attribute], sess: &Session, name: Symbol, default: u
|
||||
IntErrorKind::Zero => bug!("zero is a valid `limit`"),
|
||||
kind => bug!("unimplemented IntErrorKind variant: {:?}", kind),
|
||||
};
|
||||
|
||||
err.span_label(value_span, error_str);
|
||||
err.emit();
|
||||
sess.emit_err(LimitInvalid { span: attr.span, value_span, error_str });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user