Skip to content

Commit b37e645

Browse files
committed
Migrate limit error
1 parent 00cd965 commit b37e645

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

compiler/rustc_error_messages/locales/en-US/middle.ftl

+4
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,7 @@ middle_conflict_types =
1111
1212
middle_previous_use_here =
1313
previous use here
14+
15+
middle_limit_invalid =
16+
`limit` must be a non-negative integer
17+
.label = {$error_str}

compiler/rustc_middle/src/error.rs

+10
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,13 @@ pub enum TypeMismatchReason {
3838
span: Span,
3939
},
4040
}
41+
42+
#[derive(SessionDiagnostic)]
43+
#[diag(middle::limit_invalid)]
44+
pub struct LimitInvalid<'a> {
45+
#[primary_span]
46+
pub span: Span,
47+
#[label]
48+
pub value_span: Span,
49+
pub error_str: &'a str,
50+
}

compiler/rustc_middle/src/middle/limits.rs

+2-6
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
//! just peeks and looks for that attribute.
1111
1212
use crate::bug;
13+
use crate::error::LimitInvalid;
1314
use crate::ty;
1415
use rustc_ast::Attribute;
1516
use rustc_session::Session;
@@ -56,9 +57,6 @@ fn get_limit(krate_attrs: &[Attribute], sess: &Session, name: Symbol, default: u
5657
match s.as_str().parse() {
5758
Ok(n) => return Limit::new(n),
5859
Err(e) => {
59-
let mut err =
60-
sess.struct_span_err(attr.span, "`limit` must be a non-negative integer");
61-
6260
let value_span = attr
6361
.meta()
6462
.and_then(|meta| meta.name_value_literal_span())
@@ -74,9 +72,7 @@ fn get_limit(krate_attrs: &[Attribute], sess: &Session, name: Symbol, default: u
7472
IntErrorKind::Zero => bug!("zero is a valid `limit`"),
7573
kind => bug!("unimplemented IntErrorKind variant: {:?}", kind),
7674
};
77-
78-
err.span_label(value_span, error_str);
79-
err.emit();
75+
sess.emit_err(LimitInvalid { span: attr.span, value_span, error_str });
8076
}
8177
}
8278
}

0 commit comments

Comments
 (0)