Revert some span_bug
s to span_delayed_bug
.
Fixes #121410. Fixes #121414. Fixes #121418. Fixes #121431.
This commit is contained in:
parent
d8b00690ec
commit
4f83e50f98
@ -1636,7 +1636,9 @@ fn lower_opaque_inner(
|
|||||||
if let Some(old_def_id) = self.orig_opt_local_def_id(param) {
|
if let Some(old_def_id) = self.orig_opt_local_def_id(param) {
|
||||||
old_def_id
|
old_def_id
|
||||||
} else {
|
} else {
|
||||||
self.dcx().span_bug(lifetime.ident.span, "no def-id for fresh lifetime");
|
self.dcx()
|
||||||
|
.span_delayed_bug(lifetime.ident.span, "no def-id for fresh lifetime");
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -315,7 +315,7 @@ enum Defaults {
|
|||||||
|
|
||||||
if is_host_effect {
|
if is_host_effect {
|
||||||
if let Some(idx) = host_effect_index {
|
if let Some(idx) = host_effect_index {
|
||||||
tcx.dcx().span_bug(
|
tcx.dcx().span_delayed_bug(
|
||||||
param.span,
|
param.span,
|
||||||
format!("parent also has host effect param? index: {idx}, def: {def_id:?}"),
|
format!("parent also has host effect param? index: {idx}, def: {def_id:?}"),
|
||||||
);
|
);
|
||||||
|
@ -582,7 +582,8 @@ fn total_fields_in_tuple(&self, pat_hir_id: hir::HirId, span: Span) -> McResult<
|
|||||||
match ty.kind() {
|
match ty.kind() {
|
||||||
ty::Tuple(args) => Ok(args.len()),
|
ty::Tuple(args) => Ok(args.len()),
|
||||||
_ => {
|
_ => {
|
||||||
self.tcx().dcx().span_bug(span, "tuple pattern not applied to a tuple");
|
self.tcx().dcx().span_delayed_bug(span, "tuple pattern not applied to a tuple");
|
||||||
|
Err(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -172,9 +172,7 @@ fn do_normalize_predicates<'tcx>(
|
|||||||
// the normalized predicates.
|
// the normalized predicates.
|
||||||
let errors = infcx.resolve_regions(&outlives_env);
|
let errors = infcx.resolve_regions(&outlives_env);
|
||||||
if !errors.is_empty() {
|
if !errors.is_empty() {
|
||||||
// @lcnr: Let's still ICE here for now. I want a test case
|
tcx.dcx().span_delayed_bug(
|
||||||
// for that.
|
|
||||||
tcx.dcx().span_bug(
|
|
||||||
span,
|
span,
|
||||||
format!("failed region resolution while normalizing {elaborated_env:?}: {errors:?}"),
|
format!("failed region resolution while normalizing {elaborated_env:?}: {errors:?}"),
|
||||||
);
|
);
|
||||||
|
4
tests/ui/lowering/span-bug-issue-121431.rs
Normal file
4
tests/ui/lowering/span-bug-issue-121431.rs
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
fn bug<T>() -> impl CallbackMarker< Item = [(); { |_: &mut ()| 3; 4 }] > {}
|
||||||
|
//~^ ERROR cannot find trait `CallbackMarker` in this scope
|
||||||
|
|
||||||
|
fn main() {}
|
9
tests/ui/lowering/span-bug-issue-121431.stderr
Normal file
9
tests/ui/lowering/span-bug-issue-121431.stderr
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
error[E0405]: cannot find trait `CallbackMarker` in this scope
|
||||||
|
--> $DIR/span-bug-issue-121431.rs:1:21
|
||||||
|
|
|
||||||
|
LL | fn bug<T>() -> impl CallbackMarker< Item = [(); { |_: &mut ()| 3; 4 }] > {}
|
||||||
|
| ^^^^^^^^^^^^^^ not found in this scope
|
||||||
|
|
||||||
|
error: aborting due to 1 previous error
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0405`.
|
@ -0,0 +1,13 @@
|
|||||||
|
#![feature(const_trait_impl)]
|
||||||
|
#![feature(effects)]
|
||||||
|
|
||||||
|
struct S;
|
||||||
|
trait T {}
|
||||||
|
|
||||||
|
impl const dyn T {
|
||||||
|
//~^ ERROR inherent impls cannot be `const`
|
||||||
|
//~| ERROR the const parameter `host` is not constrained by the impl trait, self type, or
|
||||||
|
pub const fn new() -> std::sync::Mutex<dyn T> {}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
@ -0,0 +1,22 @@
|
|||||||
|
error: inherent impls cannot be `const`
|
||||||
|
--> $DIR/span-bug-issue-121418.rs:7:12
|
||||||
|
|
|
||||||
|
LL | impl const dyn T {
|
||||||
|
| ----- ^^^^^ inherent impl for this type
|
||||||
|
| |
|
||||||
|
| `const` because of this
|
||||||
|
|
|
||||||
|
= note: only trait implementations may be annotated with `const`
|
||||||
|
|
||||||
|
error[E0207]: the const parameter `host` is not constrained by the impl trait, self type, or predicates
|
||||||
|
--> $DIR/span-bug-issue-121418.rs:7:6
|
||||||
|
|
|
||||||
|
LL | impl const dyn T {
|
||||||
|
| ^^^^^ unconstrained const parameter
|
||||||
|
|
|
||||||
|
= note: expressions using a const parameter must map each value to a distinct output value
|
||||||
|
= note: proving the result of expressions other than the parameter are unique is not supported
|
||||||
|
|
||||||
|
error: aborting due to 2 previous errors
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0207`.
|
15
tests/ui/traits/span-bug-issue-121414.rs
Normal file
15
tests/ui/traits/span-bug-issue-121414.rs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
trait Bar {
|
||||||
|
type Type;
|
||||||
|
}
|
||||||
|
struct Foo<'a>(&'a ());
|
||||||
|
impl<'a> Bar for Foo<'f> { //~ ERROR undeclared lifetime
|
||||||
|
type Type = u32;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test() //~ ERROR implementation of `Bar` is not general enough
|
||||||
|
where
|
||||||
|
for<'a> <Foo<'a> as Bar>::Type: Sized,
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
20
tests/ui/traits/span-bug-issue-121414.stderr
Normal file
20
tests/ui/traits/span-bug-issue-121414.stderr
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
error[E0261]: use of undeclared lifetime name `'f`
|
||||||
|
--> $DIR/span-bug-issue-121414.rs:5:22
|
||||||
|
|
|
||||||
|
LL | impl<'a> Bar for Foo<'f> {
|
||||||
|
| - ^^ undeclared lifetime
|
||||||
|
| |
|
||||||
|
| help: consider introducing lifetime `'f` here: `'f,`
|
||||||
|
|
||||||
|
error: implementation of `Bar` is not general enough
|
||||||
|
--> $DIR/span-bug-issue-121414.rs:9:4
|
||||||
|
|
|
||||||
|
LL | fn test()
|
||||||
|
| ^^^^ implementation of `Bar` is not general enough
|
||||||
|
|
|
||||||
|
= note: `Bar` would have to be implemented for the type `Foo<'0>`, for any lifetime `'0`...
|
||||||
|
= note: ...but `Bar` is actually implemented for the type `Foo<'1>`, for some specific lifetime `'1`
|
||||||
|
|
||||||
|
error: aborting due to 2 previous errors
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0261`.
|
15
tests/ui/typeck/span-bug-issue-121410.rs
Normal file
15
tests/ui/typeck/span-bug-issue-121410.rs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
fn test_missing_unsafe_warning_on_repr_packed() {
|
||||||
|
struct Foo {
|
||||||
|
x: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
let foo = Foo { x: String::new() };
|
||||||
|
|
||||||
|
let c = || {
|
||||||
|
let (_, t2) = foo.x; //~ ERROR mismatched types
|
||||||
|
};
|
||||||
|
|
||||||
|
c();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
14
tests/ui/typeck/span-bug-issue-121410.stderr
Normal file
14
tests/ui/typeck/span-bug-issue-121410.stderr
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
error[E0308]: mismatched types
|
||||||
|
--> $DIR/span-bug-issue-121410.rs:9:13
|
||||||
|
|
|
||||||
|
LL | let (_, t2) = foo.x;
|
||||||
|
| ^^^^^^^ ----- this expression has type `String`
|
||||||
|
| |
|
||||||
|
| expected `String`, found `(_, _)`
|
||||||
|
|
|
||||||
|
= note: expected struct `String`
|
||||||
|
found tuple `(_, _)`
|
||||||
|
|
||||||
|
error: aborting due to 1 previous error
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0308`.
|
Loading…
Reference in New Issue
Block a user