Skip to content

Commit 8b897bb

Browse files
committed
migrate: early.rs and enum_intrinsics_non_enums.rs
1 parent c63ba52 commit 8b897bb

File tree

4 files changed

+30
-8
lines changed

4 files changed

+30
-8
lines changed

compiler/rustc_lint/src/early.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#![deny(rustc::untranslatable_diagnostic)]
2+
#![deny(rustc::diagnostic_outside_of_impl)]
13
//! Implementation of lint checking.
24
//!
35
//! The lint checking is mostly consolidated into one pass which runs
@@ -39,6 +41,7 @@ pub struct EarlyContextAndPass<'a, T: EarlyLintPass> {
3941
impl<'a, T: EarlyLintPass> EarlyContextAndPass<'a, T> {
4042
// This always-inlined function is for the hot call site.
4143
#[inline(always)]
44+
#[allow(rustc::diagnostic_outside_of_impl)]
4245
fn inlined_check_id(&mut self, id: ast::NodeId) {
4346
for early_lint in self.context.buffered.take(id) {
4447
let BufferedEarlyLint { span, msg, node_id: _, lint_id, diagnostic } = early_lint;

compiler/rustc_lint/src/enum_intrinsics_non_enums.rs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
1-
use crate::{context::LintContext, LateContext, LateLintPass};
2-
use rustc_errors::fluent;
1+
#![deny(rustc::untranslatable_diagnostic)]
2+
#![deny(rustc::diagnostic_outside_of_impl)]
3+
use crate::{
4+
context::LintContext,
5+
lints::{EnumIntrinsicsMemDiscriminate, EnumIntrinsicsMemVariant},
6+
LateContext, LateLintPass,
7+
};
38
use rustc_hir as hir;
49
use rustc_middle::ty::{visit::TypeVisitable, Ty};
510
use rustc_span::{symbol::sym, Span};
@@ -50,23 +55,21 @@ fn enforce_mem_discriminant(
5055
) {
5156
let ty_param = cx.typeck_results().node_substs(func_expr.hir_id).type_at(0);
5257
if is_non_enum(ty_param) {
53-
cx.struct_span_lint(
58+
cx.emit_spanned_lint(
5459
ENUM_INTRINSICS_NON_ENUMS,
5560
expr_span,
56-
fluent::lint_enum_intrinsics_mem_discriminant,
57-
|lint| lint.set_arg("ty_param", ty_param).span_note(args_span, fluent::note),
61+
EnumIntrinsicsMemDiscriminate { ty_param, note: args_span },
5862
);
5963
}
6064
}
6165

6266
fn enforce_mem_variant_count(cx: &LateContext<'_>, func_expr: &hir::Expr<'_>, span: Span) {
6367
let ty_param = cx.typeck_results().node_substs(func_expr.hir_id).type_at(0);
6468
if is_non_enum(ty_param) {
65-
cx.struct_span_lint(
69+
cx.emit_spanned_lint(
6670
ENUM_INTRINSICS_NON_ENUMS,
6771
span,
68-
fluent::lint_enum_intrinsics_mem_variant,
69-
|lint| lint.set_arg("ty_param", ty_param).note(fluent::note),
72+
EnumIntrinsicsMemVariant { ty_param },
7073
);
7174
}
7275
}

compiler/rustc_lint/src/errors.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ impl AddToDiagnostic for OverruledAttributeSub {
3838
OverruledAttributeSub::NodeSource { span, reason } => {
3939
diag.span_label(span, fluent::lint_node_source);
4040
if let Some(rationale) = reason {
41+
#[allow(rustc::diagnostic_outside_of_impl)]
4142
diag.note(rationale.as_str());
4243
}
4344
}

compiler/rustc_lint/src/lints.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,21 @@ pub enum ArrayIntoIterDiagSub {
3232
},
3333
}
3434

35+
#[derive(LintDiagnostic)]
36+
#[diag(lint_enum_intrinsics_mem_discriminant)]
37+
pub struct EnumIntrinsicsMemDiscriminate<'a> {
38+
pub ty_param: Ty<'a>,
39+
#[note]
40+
pub note: Span,
41+
}
42+
43+
#[derive(LintDiagnostic)]
44+
#[diag(lint_enum_intrinsics_mem_variant)]
45+
#[note]
46+
pub struct EnumIntrinsicsMemVariant<'a> {
47+
pub ty_param: Ty<'a>,
48+
}
49+
3550
#[derive(LintDiagnostic)]
3651
#[diag(lint_cstring_ptr)]
3752
#[note]

0 commit comments

Comments
 (0)