Skip to content

Commit 2874f09

Browse files
committed
lint: LintDiagnosticBuilder into rustc_errors
Signed-off-by: David Wood <[email protected]>
1 parent 84ec777 commit 2874f09

File tree

10 files changed

+39
-42
lines changed

10 files changed

+39
-42
lines changed

compiler/rustc_errors/src/diagnostic_builder.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,3 +589,26 @@ macro_rules! struct_span_err {
589589
macro_rules! error_code {
590590
($code:ident) => {{ $crate::DiagnosticId::Error(stringify!($code).to_owned()) }};
591591
}
592+
593+
/// Wrapper around a `DiagnosticBuilder` for creating lints.
594+
pub struct LintDiagnosticBuilder<'a, G: EmissionGuarantee>(DiagnosticBuilder<'a, G>);
595+
596+
impl<'a, G: EmissionGuarantee> LintDiagnosticBuilder<'a, G> {
597+
/// Return the inner `DiagnosticBuilder`, first setting the primary message to `msg`.
598+
pub fn build(mut self, msg: impl Into<DiagnosticMessage>) -> DiagnosticBuilder<'a, G> {
599+
self.0.set_primary_message(msg);
600+
self.0.set_is_lint();
601+
self.0
602+
}
603+
604+
/// Create a `LintDiagnosticBuilder` from some existing `DiagnosticBuilder`.
605+
pub fn new(err: DiagnosticBuilder<'a, G>) -> LintDiagnosticBuilder<'a, G> {
606+
LintDiagnosticBuilder(err)
607+
}
608+
}
609+
610+
impl<'a> LintDiagnosticBuilder<'a, ErrorGuaranteed> {
611+
pub fn forget_guarantee(self) -> LintDiagnosticBuilder<'a, ()> {
612+
LintDiagnosticBuilder(self.0.forget_guarantee())
613+
}
614+
}

compiler/rustc_errors/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ pub use diagnostic::{
373373
AddSubdiagnostic, Diagnostic, DiagnosticArg, DiagnosticArgValue, DiagnosticId,
374374
DiagnosticStyledString, IntoDiagnosticArg, SubDiagnostic,
375375
};
376-
pub use diagnostic_builder::{DiagnosticBuilder, EmissionGuarantee};
376+
pub use diagnostic_builder::{DiagnosticBuilder, EmissionGuarantee, LintDiagnosticBuilder};
377377
use std::backtrace::Backtrace;
378378

379379
/// A handler deals with errors and other compiler output.

compiler/rustc_lint/src/builtin.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,16 @@ use rustc_ast_pretty::pprust::{self, expr_to_string};
3232
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
3333
use rustc_data_structures::stack::ensure_sufficient_stack;
3434
use rustc_errors::{
35-
fluent, Applicability, Diagnostic, DiagnosticMessage, DiagnosticStyledString, MultiSpan,
35+
fluent, Applicability, Diagnostic, DiagnosticMessage, DiagnosticStyledString,
36+
LintDiagnosticBuilder, MultiSpan,
3637
};
3738
use rustc_feature::{deprecated_attributes, AttributeGate, BuiltinAttribute, GateIssue, Stability};
3839
use rustc_hir as hir;
3940
use rustc_hir::def::{DefKind, Res};
4041
use rustc_hir::def_id::{DefId, LocalDefId, LocalDefIdSet, CRATE_DEF_ID};
4142
use rustc_hir::{ForeignItemKind, GenericParamKind, HirId, PatKind, PredicateOrigin};
4243
use rustc_index::vec::Idx;
43-
use rustc_middle::lint::{in_external_macro, LintDiagnosticBuilder};
44+
use rustc_middle::lint::in_external_macro;
4445
use rustc_middle::ty::layout::{LayoutError, LayoutOf};
4546
use rustc_middle::ty::print::with_no_trimmed_paths;
4647
use rustc_middle::ty::subst::GenericArgKind;

compiler/rustc_lint/src/context.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,11 @@ use rustc_ast::util::unicode::TEXT_FLOW_CONTROL_CHARS;
2222
use rustc_data_structures::fx::FxHashMap;
2323
use rustc_data_structures::sync;
2424
use rustc_errors::{add_elided_lifetime_in_path_suggestion, struct_span_err};
25-
use rustc_errors::{Applicability, MultiSpan, SuggestionStyle};
25+
use rustc_errors::{Applicability, LintDiagnosticBuilder, MultiSpan, SuggestionStyle};
2626
use rustc_hir as hir;
2727
use rustc_hir::def::Res;
2828
use rustc_hir::def_id::{CrateNum, DefId};
2929
use rustc_hir::definitions::{DefPathData, DisambiguatedDefPathData};
30-
use rustc_middle::lint::LintDiagnosticBuilder;
3130
use rustc_middle::middle::privacy::AccessLevels;
3231
use rustc_middle::middle::stability;
3332
use rustc_middle::ty::layout::{LayoutError, LayoutOfHelpers, TyAndLayout};

compiler/rustc_lint/src/levels.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ use crate::late::unerased_lint_store;
33
use rustc_ast as ast;
44
use rustc_ast_pretty::pprust;
55
use rustc_data_structures::fx::FxHashMap;
6-
use rustc_errors::{struct_span_err, Applicability, Diagnostic, MultiSpan};
6+
use rustc_errors::{struct_span_err, Applicability, Diagnostic, LintDiagnosticBuilder, MultiSpan};
77
use rustc_hir as hir;
88
use rustc_hir::{intravisit, HirId};
99
use rustc_middle::hir::nested_filter;
1010
use rustc_middle::lint::{
11-
struct_lint_level, LevelAndSource, LintDiagnosticBuilder, LintExpectation, LintLevelMap,
12-
LintLevelSets, LintLevelSource, LintSet, LintStackIndex, COMMAND_LINE,
11+
struct_lint_level, LevelAndSource, LintExpectation, LintLevelMap, LintLevelSets,
12+
LintLevelSource, LintSet, LintStackIndex, COMMAND_LINE,
1313
};
1414
use rustc_middle::ty::query::Providers;
1515
use rustc_middle::ty::{RegisteredTools, TyCtxt};

compiler/rustc_middle/src/lint.rs

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@ use std::cmp;
22

33
use rustc_data_structures::fx::FxHashMap;
44
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
5-
use rustc_errors::{
6-
Diagnostic, DiagnosticBuilder, DiagnosticId, DiagnosticMessage, EmissionGuarantee,
7-
ErrorGuaranteed, MultiSpan,
8-
};
5+
use rustc_errors::{Diagnostic, DiagnosticId, LintDiagnosticBuilder, MultiSpan};
96
use rustc_hir::HirId;
107
use rustc_index::vec::IndexVec;
118
use rustc_query_system::ich::StableHashingContext;
@@ -228,28 +225,6 @@ impl LintExpectation {
228225
}
229226
}
230227

231-
pub struct LintDiagnosticBuilder<'a, G: EmissionGuarantee>(DiagnosticBuilder<'a, G>);
232-
233-
impl<'a, G: EmissionGuarantee> LintDiagnosticBuilder<'a, G> {
234-
/// Return the inner `DiagnosticBuilder`, first setting the primary message to `msg`.
235-
pub fn build(mut self, msg: impl Into<DiagnosticMessage>) -> DiagnosticBuilder<'a, G> {
236-
self.0.set_primary_message(msg);
237-
self.0.set_is_lint();
238-
self.0
239-
}
240-
241-
/// Create a `LintDiagnosticBuilder` from some existing `DiagnosticBuilder`.
242-
pub fn new(err: DiagnosticBuilder<'a, G>) -> LintDiagnosticBuilder<'a, G> {
243-
LintDiagnosticBuilder(err)
244-
}
245-
}
246-
247-
impl<'a> LintDiagnosticBuilder<'a, ErrorGuaranteed> {
248-
pub fn forget_guarantee(self) -> LintDiagnosticBuilder<'a, ()> {
249-
LintDiagnosticBuilder(self.0.forget_guarantee())
250-
}
251-
}
252-
253228
pub fn explain_lint_level_source(
254229
lint: &'static Lint,
255230
level: Level,

compiler/rustc_middle/src/ty/context.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::arena::Arena;
44
use crate::dep_graph::{DepGraph, DepKind, DepKindStruct};
55
use crate::hir::place::Place as HirPlace;
66
use crate::infer::canonical::{Canonical, CanonicalVarInfo, CanonicalVarInfos};
7-
use crate::lint::{struct_lint_level, LintDiagnosticBuilder, LintLevelSource};
7+
use crate::lint::{struct_lint_level, LintLevelSource};
88
use crate::middle::codegen_fn_attrs::CodegenFnAttrs;
99
use crate::middle::resolve_lifetime;
1010
use crate::middle::stability;
@@ -34,7 +34,7 @@ use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
3434
use rustc_data_structures::steal::Steal;
3535
use rustc_data_structures::sync::{self, Lock, Lrc, WorkerLocal};
3636
use rustc_data_structures::vec_map::VecMap;
37-
use rustc_errors::{ErrorGuaranteed, MultiSpan};
37+
use rustc_errors::{ErrorGuaranteed, LintDiagnosticBuilder, MultiSpan};
3838
use rustc_hir as hir;
3939
use rustc_hir::def::{DefKind, Res};
4040
use rustc_hir::def_id::{CrateNum, DefId, DefIdMap, LocalDefId, LOCAL_CRATE};

compiler/rustc_mir_transform/src/check_const_item_mutation.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
use rustc_errors::DiagnosticBuilder;
2-
use rustc_middle::lint::LintDiagnosticBuilder;
1+
use rustc_errors::{DiagnosticBuilder, LintDiagnosticBuilder};
32
use rustc_middle::mir::visit::Visitor;
43
use rustc_middle::mir::*;
54
use rustc_middle::ty::TyCtxt;

compiler/rustc_trait_selection/src/traits/specialize/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,8 @@ use crate::infer::{InferCtxt, InferOk, TyCtxtInferExt};
1616
use crate::traits::select::IntercrateAmbiguityCause;
1717
use crate::traits::{self, coherence, FutureCompatOverlapErrorKind, ObligationCause, TraitEngine};
1818
use rustc_data_structures::fx::FxHashSet;
19-
use rustc_errors::{struct_span_err, EmissionGuarantee};
19+
use rustc_errors::{struct_span_err, EmissionGuarantee, LintDiagnosticBuilder};
2020
use rustc_hir::def_id::{DefId, LocalDefId};
21-
use rustc_middle::lint::LintDiagnosticBuilder;
2221
use rustc_middle::ty::subst::{InternalSubsts, Subst, SubstsRef};
2322
use rustc_middle::ty::{self, ImplSubject, TyCtxt};
2423
use rustc_session::lint::builtin::COHERENCE_LEAK_CHECK;

src/librustdoc/passes/check_code_block_syntax.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
//! Validates syntax inside Rust code blocks (\`\`\`rust).
22
use rustc_data_structures::sync::{Lock, Lrc};
3-
use rustc_errors::{emitter::Emitter, Applicability, Diagnostic, Handler, LazyFallbackBundle};
4-
use rustc_middle::lint::LintDiagnosticBuilder;
3+
use rustc_errors::{
4+
emitter::Emitter, Applicability, Diagnostic, Handler, LazyFallbackBundle, LintDiagnosticBuilder,
5+
};
56
use rustc_parse::parse_stream_from_source_str;
67
use rustc_session::parse::ParseSess;
78
use rustc_span::hygiene::{AstPass, ExpnData, ExpnKind, LocalExpnId};

0 commit comments

Comments
 (0)