diff options
| author | clubby789 <jamie@hill-daniel.co.uk> | 2023-09-15 01:10:08 +0000 |
|---|---|---|
| committer | clubby789 <jamie@hill-daniel.co.uk> | 2023-09-15 14:24:58 +0000 |
| commit | b40f11c8a97bf3d5b607449ed16370047e3e56f4 (patch) | |
| tree | 4bf0e41dccc0484423ffd94d415dda433e4e0a45 | |
| parent | 9edeb19f9609ba82e4a0401e70dd704abddea4bc (diff) | |
| download | rust-b40f11c8a97bf3d5b607449ed16370047e3e56f4.tar.gz rust-b40f11c8a97bf3d5b607449ed16370047e3e56f4.zip | |
Migrate 'rust-call incorrect arguments' diagnostic
| -rw-r--r-- | compiler/rustc_hir_typeck/messages.ftl | 3 | ||||
| -rw-r--r-- | compiler/rustc_hir_typeck/src/callee.rs | 7 | ||||
| -rw-r--r-- | compiler/rustc_hir_typeck/src/errors.rs | 7 |
3 files changed, 12 insertions, 5 deletions
diff --git a/compiler/rustc_hir_typeck/messages.ftl b/compiler/rustc_hir_typeck/messages.ftl index d12a6a09079..cf041166000 100644 --- a/compiler/rustc_hir_typeck/messages.ftl +++ b/compiler/rustc_hir_typeck/messages.ftl @@ -90,6 +90,9 @@ hir_typeck_return_stmt_outside_of_fn_body = .encl_body_label = the {$statement_kind} is part of this body... .encl_fn_label = ...not the enclosing function body +hir_typeck_rustcall_incorrect_args = + functions with the "rust-call" ABI must take a single non-self tuple argument + hir_typeck_struct_expr_non_exhaustive = cannot create non-exhaustive {$what} using struct expression diff --git a/compiler/rustc_hir_typeck/src/callee.rs b/compiler/rustc_hir_typeck/src/callee.rs index 8c47eed05e9..6535bc77dcf 100644 --- a/compiler/rustc_hir_typeck/src/callee.rs +++ b/compiler/rustc_hir_typeck/src/callee.rs @@ -382,7 +382,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // to let us test the trait evaluation system. // Untranslatable diagnostics are okay for rustc internals #[allow(rustc::untranslatable_diagnostic)] - #[allow(rustc::diagnostic_outside_of_impl)] + #[allow(rustc::diagnostic_outside_of_impl)] if self.tcx.has_attr(def_id, sym::rustc_evaluate_where_clauses) { let predicates = self.tcx.predicates_of(def_id); let predicates = predicates.instantiate(self.tcx, args); @@ -474,10 +474,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { ); self.require_type_is_sized(ty, sp, traits::RustCall); } else { - self.tcx.sess.span_err( - sp, - "functions with the \"rust-call\" ABI must take a single non-self tuple argument", - ); + self.tcx.sess.emit_err(errors::RustCallIncorrectArgs { span: sp }); } } diff --git a/compiler/rustc_hir_typeck/src/errors.rs b/compiler/rustc_hir_typeck/src/errors.rs index 8ba04ec4baf..bcf19c249e7 100644 --- a/compiler/rustc_hir_typeck/src/errors.rs +++ b/compiler/rustc_hir_typeck/src/errors.rs @@ -55,6 +55,13 @@ impl IntoDiagnosticArg for ReturnLikeStatementKind { } #[derive(Diagnostic)] +#[diag(hir_typeck_rustcall_incorrect_args)] +pub struct RustCallIncorrectArgs { + #[primary_span] + pub span: Span, +} + +#[derive(Diagnostic)] #[diag(hir_typeck_yield_expr_outside_of_generator, code = "E0627")] pub struct YieldExprOutsideOfGenerator { #[primary_span] |
