Skip to content

Commit bfefefb

Browse files
committed
Migrate fn_param_forbidden_self and rename others to have prefix fn_param_
1 parent 07e0bc9 commit bfefefb

File tree

3 files changed

+35
-28
lines changed

3 files changed

+35
-28
lines changed

compiler/rustc_ast_passes/src/ast_validation.rs

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -331,21 +331,21 @@ impl<'a> AstValidator<'a> {
331331
let max_num_args: usize = u16::MAX.into();
332332
if fn_decl.inputs.len() > max_num_args {
333333
let Param { span, .. } = fn_decl.inputs[0];
334-
self.session.emit_err(TooManyParams { span, max_num_args });
334+
self.session.emit_err(FnParamTooMany { span, max_num_args });
335335
}
336336
}
337337

338338
fn check_decl_cvaradic_pos(&self, fn_decl: &FnDecl) {
339339
match &*fn_decl.inputs {
340340
[Param { ty, span, .. }] => {
341341
if let TyKind::CVarArgs = ty.kind {
342-
self.session.emit_err(CVarArgsIsSoleParam { span: *span });
342+
self.session.emit_err(FnParamCVarArgsOnly { span: *span });
343343
}
344344
}
345345
[ps @ .., _] => {
346346
for Param { ty, span, .. } in ps {
347347
if let TyKind::CVarArgs = ty.kind {
348-
self.session.emit_err(CVarArgsNotLast { span: *span });
348+
self.session.emit_err(FnParamCVarArgsNotLast { span: *span });
349349
}
350350
}
351351
}
@@ -372,24 +372,17 @@ impl<'a> AstValidator<'a> {
372372
})
373373
.for_each(|attr| {
374374
if attr.is_doc_comment() {
375-
self.session.emit_err(DocCommentOnFnParam { span: attr.span });
375+
self.session.emit_err(FnParamDocComment { span: attr.span });
376376
} else {
377-
self.session.emit_err(ForbiddenAttrOnFnParam { span: attr.span });
377+
self.session.emit_err(FnParamForbiddenAttr { span: attr.span });
378378
}
379379
});
380380
}
381381

382382
fn check_decl_self_param(&self, fn_decl: &FnDecl, self_semantic: SelfSemantic) {
383383
if let (SelfSemantic::No, [param, ..]) = (self_semantic, &*fn_decl.inputs) {
384384
if param.is_self() {
385-
self.err_handler()
386-
.struct_span_err(
387-
param.span,
388-
"`self` parameter is only allowed in associated functions",
389-
)
390-
.span_label(param.span, "not semantically valid as function parameter")
391-
.note("associated functions are those in `impl` or `trait` definitions")
392-
.emit();
385+
self.session.emit_err(FnParamForbiddenSelf { span: param.span });
393386
}
394387
}
395388
}

compiler/rustc_ast_passes/src/errors.rs

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -106,38 +106,47 @@ pub struct ForbiddenNonLifetimeParam {
106106
}
107107

108108
#[derive(SessionDiagnostic)]
109-
#[error(ast_passes::too_many_params)]
110-
pub struct TooManyParams {
109+
#[error(ast_passes::fn_param_too_many)]
110+
pub struct FnParamTooMany {
111111
#[primary_span]
112112
pub span: Span,
113113
pub max_num_args: usize,
114114
}
115115

116116
#[derive(SessionDiagnostic)]
117-
#[error(ast_passes::c_var_args_is_sole_param)]
118-
pub struct CVarArgsIsSoleParam {
117+
#[error(ast_passes::fn_param_c_var_args_only)]
118+
pub struct FnParamCVarArgsOnly {
119119
#[primary_span]
120120
pub span: Span,
121121
}
122122

123123
#[derive(SessionDiagnostic)]
124-
#[error(ast_passes::c_var_args_not_last)]
125-
pub struct CVarArgsNotLast {
124+
#[error(ast_passes::fn_param_c_var_args_not_last)]
125+
pub struct FnParamCVarArgsNotLast {
126126
#[primary_span]
127127
pub span: Span,
128128
}
129129

130130
#[derive(SessionDiagnostic)]
131-
#[error(ast_passes::doc_comment_on_fn_param)]
132-
pub struct DocCommentOnFnParam {
131+
#[error(ast_passes::fn_param_doc_comment)]
132+
pub struct FnParamDocComment {
133133
#[primary_span]
134134
#[label]
135135
pub span: Span,
136136
}
137137

138138
#[derive(SessionDiagnostic)]
139-
#[error(ast_passes::forbidden_attr_on_fn_param)]
140-
pub struct ForbiddenAttrOnFnParam {
139+
#[error(ast_passes::fn_param_forbidden_attr)]
140+
pub struct FnParamForbiddenAttr {
141141
#[primary_span]
142142
pub span: Span,
143143
}
144+
145+
#[derive(SessionDiagnostic)]
146+
#[error(ast_passes::fn_param_forbidden_self)]
147+
#[note]
148+
pub struct FnParamForbiddenSelf {
149+
#[primary_span]
150+
#[label]
151+
pub span: Span,
152+
}

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,18 +38,23 @@ ast_passes_forbidden_lifetime_bound =
3838
ast_passes_forbidden_non_lifetime_param =
3939
only lifetime parameters can be used in this context
4040
41-
ast_passes_too_many_params =
41+
ast_passes_fn_param_too_many =
4242
function can not have more than {$max_num_args} arguments
4343
44-
ast_passes_c_var_args_is_sole_param =
44+
ast_passes_fn_param_c_var_args_only =
4545
C-variadic function must be declared with at least one named argument
4646
47-
ast_passes_c_var_args_not_last =
47+
ast_passes_fn_param_c_var_args_not_last =
4848
`...` must be the last argument of a C-variadic function
4949
50-
ast_passes_doc_comment_on_fn_param =
50+
ast_passes_fn_param_doc_comment =
5151
documentation comments cannot be applied to function parameters
5252
.label = doc comments are not allowed here
5353
54-
ast_passes_forbidden_attr_on_fn_param =
54+
ast_passes_fn_param_forbidden_attr =
5555
allow, cfg, cfg_attr, deny, expect, forbid, and warn are the only allowed built-in attributes in function parameters
56+
57+
ast_passes_fn_param_forbidden_self =
58+
`self` parameter is only allowed in associated functions
59+
.label = not semantically valid as function parameter
60+
.note = associated functions are those in `impl` or `trait` definitions

0 commit comments

Comments
 (0)