Skip to content

Commit 4efe3dc

Browse files
committed
Auto merge of #153791 - JonathanBrouwer:rollup-BMzX17I, r=JonathanBrouwer
Rollup of 2 pull requests Successful merges: - #153787 (Rename `rustc_middle::lint::diag_lint_level` into `lint_level`) - #153321 (Add high-priority ICEs to tests/crashes)
2 parents 3102493 + 0593e74 commit 4efe3dc

File tree

7 files changed

+65
-18
lines changed

7 files changed

+65
-18
lines changed

‎compiler/rustc_codegen_ssa/src/back/link.rs‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ use rustc_metadata::{
3030
walk_native_lib_search_dirs,
3131
};
3232
use rustc_middle::bug;
33-
use rustc_middle::lint::diag_lint_level;
33+
use rustc_middle::lint::emit_lint_base;
3434
use rustc_middle::middle::debugger_visualizer::DebuggerVisualizerFile;
3535
use rustc_middle::middle::dependency_format::Linkage;
3636
use rustc_middle::middle::exported_symbols::SymbolExportKind;
@@ -784,7 +784,7 @@ fn report_linker_output(sess: &Session, levels: CodegenLintLevels, stdout: &[u8]
784784
}
785785

786786
let lint_msg = |msg| {
787-
diag_lint_level(
787+
emit_lint_base(
788788
sess,
789789
LINKER_MESSAGES,
790790
levels.linker_messages,
@@ -793,7 +793,7 @@ fn report_linker_output(sess: &Session, levels: CodegenLintLevels, stdout: &[u8]
793793
);
794794
};
795795
let lint_info = |msg| {
796-
diag_lint_level(sess, LINKER_INFO, levels.linker_info, None, LinkerOutput { inner: msg });
796+
emit_lint_base(sess, LINKER_INFO, levels.linker_info, None, LinkerOutput { inner: msg });
797797
};
798798

799799
if !escaped_stderr.is_empty() {

‎compiler/rustc_lint/src/context.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,7 @@ pub trait LintContext {
514514
// set the span in their `decorate` function (preferably using set_span).
515515
/// Emit a lint at the appropriate level, with an optional associated span.
516516
///
517-
/// [`diag_lint_level`]: rustc_middle::lint::diag_lint_level#decorate-signature
517+
/// [`emit_lint_base`]: rustc_middle::lint::emit_lint_base#decorate-signature
518518
#[track_caller]
519519
fn opt_span_diag_lint<S: Into<MultiSpan>>(
520520
&self,

‎compiler/rustc_lint/src/levels.rs‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use rustc_index::IndexVec;
1212
use rustc_middle::bug;
1313
use rustc_middle::hir::nested_filter;
1414
use rustc_middle::lint::{
15-
LevelAndSource, LintExpectation, LintLevelSource, ShallowLintLevelMap, diag_lint_level,
15+
LevelAndSource, LintExpectation, LintLevelSource, ShallowLintLevelMap, emit_lint_base,
1616
reveal_actual_level,
1717
};
1818
use rustc_middle::query::Providers;
@@ -981,7 +981,7 @@ impl<'s, P: LintLevelsProvider> LintLevelsBuilder<'s, P> {
981981
if self.lint_added_lints {
982982
let lint = builtin::UNKNOWN_LINTS;
983983
let level = self.lint_level(builtin::UNKNOWN_LINTS);
984-
diag_lint_level(
984+
emit_lint_base(
985985
self.sess,
986986
lint,
987987
level,
@@ -1008,7 +1008,7 @@ impl<'s, P: LintLevelsProvider> LintLevelsBuilder<'s, P> {
10081008
decorator: impl for<'a> Diagnostic<'a, ()>,
10091009
) {
10101010
let level = self.lint_level(lint);
1011-
diag_lint_level(self.sess, lint, level, span, decorator)
1011+
emit_lint_base(self.sess, lint, level, span, decorator)
10121012
}
10131013

10141014
#[track_caller]
@@ -1019,13 +1019,13 @@ impl<'s, P: LintLevelsProvider> LintLevelsBuilder<'s, P> {
10191019
decorator: impl for<'a> Diagnostic<'a, ()>,
10201020
) {
10211021
let level = self.lint_level(lint);
1022-
diag_lint_level(self.sess, lint, level, Some(span), decorator);
1022+
emit_lint_base(self.sess, lint, level, Some(span), decorator);
10231023
}
10241024

10251025
#[track_caller]
10261026
pub fn emit_lint(&self, lint: &'static Lint, decorator: impl for<'a> Diagnostic<'a, ()>) {
10271027
let level = self.lint_level(lint);
1028-
diag_lint_level(self.sess, lint, level, None, decorator);
1028+
emit_lint_base(self.sess, lint, level, None, decorator);
10291029
}
10301030
}
10311031

‎compiler/rustc_middle/src/lint.rs‎

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -300,11 +300,8 @@ fn explain_lint_level_source(
300300
///
301301
/// - [`TyCtxt::emit_node_span_lint`]
302302
/// - `LintContext::opt_span_lint`
303-
///
304-
/// This function will replace `lint_level` once all its callers have been replaced
305-
/// with `diag_lint_level`.
306303
#[track_caller]
307-
pub fn diag_lint_level<'a, D: Diagnostic<'a, ()> + 'a>(
304+
pub fn emit_lint_base<'a, D: Diagnostic<'a, ()> + 'a>(
308305
sess: &'a Session,
309306
lint: &'static Lint,
310307
level: LevelAndSource,
@@ -314,7 +311,7 @@ pub fn diag_lint_level<'a, D: Diagnostic<'a, ()> + 'a>(
314311
// Avoid codegen bloat from monomorphization by immediately doing dyn dispatch of `decorate` to
315312
// the "real" work.
316313
#[track_caller]
317-
fn diag_lint_level_impl<'a>(
314+
fn emit_lint_base_impl<'a>(
318315
sess: &'a Session,
319316
lint: &'static Lint,
320317
level: LevelAndSource,
@@ -498,7 +495,7 @@ pub fn diag_lint_level<'a, D: Diagnostic<'a, ()> + 'a>(
498495
explain_lint_level_source(sess, lint, level, src, &mut err);
499496
err.emit();
500497
}
501-
diag_lint_level_impl(
498+
emit_lint_base_impl(
502499
sess,
503500
lint,
504501
level,

‎compiler/rustc_middle/src/ty/context.rs‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ use crate::dep_graph::dep_node::make_metadata;
5555
use crate::dep_graph::{DepGraph, DepKindVTable, DepNodeIndex};
5656
use crate::ich::StableHashingContext;
5757
use crate::infer::canonical::{CanonicalParamEnvCache, CanonicalVarKind};
58-
use crate::lint::diag_lint_level;
58+
use crate::lint::emit_lint_base;
5959
use crate::metadata::ModChild;
6060
use crate::middle::codegen_fn_attrs::{CodegenFnAttrs, TargetFeature};
6161
use crate::middle::resolve_bound_vars;
@@ -2539,7 +2539,7 @@ impl<'tcx> TyCtxt<'tcx> {
25392539
decorator: impl for<'a> Diagnostic<'a, ()>,
25402540
) {
25412541
let level = self.lint_level_at_node(lint, hir_id);
2542-
diag_lint_level(self.sess, lint, level, Some(span.into()), decorator)
2542+
emit_lint_base(self.sess, lint, level, Some(span.into()), decorator)
25432543
}
25442544

25452545
/// Find the appropriate span where `use` and outer attributes can be inserted at.
@@ -2582,7 +2582,7 @@ impl<'tcx> TyCtxt<'tcx> {
25822582
decorator: impl for<'a> Diagnostic<'a, ()>,
25832583
) {
25842584
let level = self.lint_level_at_node(lint, id);
2585-
diag_lint_level(self.sess, lint, level, None, decorator);
2585+
emit_lint_base(self.sess, lint, level, None, decorator);
25862586
}
25872587

25882588
pub fn in_scope_traits(self, id: HirId) -> Option<&'tcx [TraitCandidate<'tcx>]> {

‎tests/crashes/146965.rs‎

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//@ known-bug: #146965
2+
//@ compile-flags: --crate-type lib -C opt-level=3
3+
4+
fn conjure<T>() -> T {
5+
panic!()
6+
}
7+
8+
pub trait Ring {
9+
type Element;
10+
}
11+
impl<T> Ring for T {
12+
type Element = u16;
13+
}
14+
15+
// Removing the : Ring bound makes it not ICE
16+
fn map_coeff<T: Ring>(f: impl Fn(<T as Ring>::Element)) {
17+
let c = conjure::<<T as Ring>::Element>();
18+
f(c);
19+
}
20+
21+
// Adding a : Ring bound makes it not ICE
22+
fn gcd<T>() {
23+
map_coeff::<T>(|_: u16| {});
24+
}
25+
26+
// Removing the : Ring bound makes it not ICE
27+
pub fn bivariate_factorization<T: Ring>() {
28+
gcd::<T>();
29+
}

‎tests/crashes/150263.rs‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
//@ known-bug: #150263
2+
//@ compile-flags: --crate-type lib -C opt-level=3
3+
4+
pub trait Scope {
5+
type Timestamp;
6+
}
7+
impl<G> Scope for G {
8+
type Timestamp = ();
9+
}
10+
11+
pub fn create<G: Scope>() {
12+
enter::<G>();
13+
}
14+
15+
fn enter<G>() {
16+
unary::<G>(|_: <G as Scope>::Timestamp| {});
17+
}
18+
19+
fn unary<G: Scope>(constructor: impl FnOnce(G::Timestamp)) {
20+
constructor(None.unwrap());
21+
}

0 commit comments

Comments
 (0)