summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_passes/src/errors.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-07 05:48:48 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-07 05:48:48 +0000
commitef24de24a82fe681581cc130f342363c47c0969a (patch)
tree0d494f7e1a38b95c92426f58fe6eaa877303a86c /compiler/rustc_passes/src/errors.rs
parentReleasing progress-linux version 1.74.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-ef24de24a82fe681581cc130f342363c47c0969a.tar.xz
rustc-ef24de24a82fe681581cc130f342363c47c0969a.zip
Merging upstream version 1.75.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'compiler/rustc_passes/src/errors.rs')
-rw-r--r--compiler/rustc_passes/src/errors.rs79
1 files changed, 43 insertions, 36 deletions
diff --git a/compiler/rustc_passes/src/errors.rs b/compiler/rustc_passes/src/errors.rs
index f4a6bf017..411c94101 100644
--- a/compiler/rustc_passes/src/errors.rs
+++ b/compiler/rustc_passes/src/errors.rs
@@ -717,10 +717,6 @@ pub enum MacroExport {
TooManyItems,
}
-#[derive(LintDiagnostic)]
-#[diag(passes_plugin_registrar)]
-pub struct PluginRegistrar;
-
#[derive(Subdiagnostic)]
pub enum UnusedNote {
#[note(passes_unused_empty_lints_note)]
@@ -856,8 +852,15 @@ pub struct UnknownLangItem {
pub struct InvalidAttrAtCrateLevel {
pub span: Span,
- pub snippet: Option<String>,
+ pub sugg_span: Option<Span>,
pub name: Symbol,
+ pub item: Option<ItemFollowingInnerAttr>,
+}
+
+#[derive(Clone, Copy)]
+pub struct ItemFollowingInnerAttr {
+ pub span: Span,
+ pub kind: &'static str,
}
impl IntoDiagnostic<'_> for InvalidAttrAtCrateLevel {
@@ -871,15 +874,18 @@ impl IntoDiagnostic<'_> for InvalidAttrAtCrateLevel {
diag.set_arg("name", self.name);
// Only emit an error with a suggestion if we can create a string out
// of the attribute span
- if let Some(src) = self.snippet {
- let replacement = src.replace("#!", "#");
+ if let Some(span) = self.sugg_span {
diag.span_suggestion_verbose(
- self.span,
+ span,
fluent::passes_suggestion,
- replacement,
+ String::new(),
rustc_errors::Applicability::MachineApplicable,
);
}
+ if let Some(item) = self.item {
+ diag.set_arg("kind", item.kind);
+ diag.span_label(item.span, fluent::passes_invalid_attr_at_crate_level_item);
+ }
diag
}
}
@@ -1106,6 +1112,16 @@ pub struct OutsideLoop<'a> {
pub span: Span,
pub name: &'a str,
pub is_break: bool,
+ #[subdiagnostic]
+ pub suggestion: Option<OutsideLoopSuggestion>,
+}
+#[derive(Subdiagnostic)]
+#[multipart_suggestion(passes_outside_loop_suggestion, applicability = "maybe-incorrect")]
+pub struct OutsideLoopSuggestion {
+ #[suggestion_part(code = "'block: ")]
+ pub block_span: Span,
+ #[suggestion_part(code = " 'block")]
+ pub break_span: Span,
}
#[derive(Diagnostic)]
@@ -1308,7 +1324,9 @@ impl<'a> IntoDiagnostic<'a> for NoMainErr {
diag.span_label(self.sp.shrink_to_hi(), note);
}
- if let Some(main_def) = self.main_def_opt && main_def.opt_fn_def_id().is_none(){
+ if let Some(main_def) = self.main_def_opt
+ && main_def.opt_fn_def_id().is_none()
+ {
// There is something at `crate::main`, but it is not a function definition.
diag.span_label(main_def.span, fluent::passes_non_function_main);
}
@@ -1493,16 +1511,6 @@ pub struct UselessStability {
}
#[derive(Diagnostic)]
-#[diag(passes_invalid_stability)]
-pub struct InvalidStability {
- #[primary_span]
- #[label]
- pub span: Span,
- #[label(passes_item)]
- pub item_sp: Span,
-}
-
-#[derive(Diagnostic)]
#[diag(passes_cannot_stabilize_deprecated)]
pub struct CannotStabilizeDeprecated {
#[primary_span]
@@ -1513,16 +1521,6 @@ pub struct CannotStabilizeDeprecated {
}
#[derive(Diagnostic)]
-#[diag(passes_invalid_deprecation_version)]
-pub struct InvalidDeprecationVersion {
- #[primary_span]
- #[label]
- pub span: Span,
- #[label(passes_item)]
- pub item_sp: Span,
-}
-
-#[derive(Diagnostic)]
#[diag(passes_missing_stability_attr)]
pub struct MissingStabilityAttr<'a> {
#[primary_span]
@@ -1756,15 +1754,24 @@ pub struct UnusedVariableTryPrefix {
#[subdiagnostic]
pub string_interp: Vec<UnusedVariableStringInterp>,
#[subdiagnostic]
- pub sugg: UnusedVariableTryPrefixSugg,
+ pub sugg: UnusedVariableSugg,
+ pub name: String,
}
#[derive(Subdiagnostic)]
-#[multipart_suggestion(passes_suggestion, applicability = "machine-applicable")]
-pub struct UnusedVariableTryPrefixSugg {
- #[suggestion_part(code = "_{name}")]
- pub spans: Vec<Span>,
- pub name: String,
+pub enum UnusedVariableSugg {
+ #[multipart_suggestion(passes_suggestion, applicability = "machine-applicable")]
+ TryPrefixSugg {
+ #[suggestion_part(code = "_{name}")]
+ spans: Vec<Span>,
+ name: String,
+ },
+ #[help(passes_unused_variable_args_in_macro)]
+ NoSugg {
+ #[primary_span]
+ span: Span,
+ name: String,
+ },
}
pub struct UnusedVariableStringInterp {