mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-26 08:44:35 +00:00
allow ReError in CanonicalUserTypeAnnotation
This commit is contained in:
parent
82bfda848e
commit
a42cbdb165
@ -230,9 +230,9 @@ impl CanonicalizeMode for CanonicalizeUserTypeAnnotation {
|
|||||||
r: ty::Region<'tcx>,
|
r: ty::Region<'tcx>,
|
||||||
) -> ty::Region<'tcx> {
|
) -> ty::Region<'tcx> {
|
||||||
match *r {
|
match *r {
|
||||||
ty::ReEarlyBound(_) | ty::ReFree(_) | ty::ReErased | ty::ReStatic => r,
|
ty::ReEarlyBound(_) | ty::ReFree(_) | ty::ReErased | ty::ReStatic | ty::ReError(_) => r,
|
||||||
ty::ReVar(_) => canonicalizer.canonical_var_for_region_in_root_universe(r),
|
ty::ReVar(_) => canonicalizer.canonical_var_for_region_in_root_universe(r),
|
||||||
_ => {
|
ty::RePlaceholder(..) | ty::ReLateBound(..) => {
|
||||||
// We only expect region names that the user can type.
|
// We only expect region names that the user can type.
|
||||||
bug!("unexpected region in query response: `{:?}`", r)
|
bug!("unexpected region in query response: `{:?}`", r)
|
||||||
}
|
}
|
||||||
|
14
tests/ui/nll/user-annotations/region-error-ice-109072.rs
Normal file
14
tests/ui/nll/user-annotations/region-error-ice-109072.rs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
// Regression test for #109072.
|
||||||
|
// Check that we don't ICE when canonicalizing user annotation.
|
||||||
|
|
||||||
|
trait Lt<'a> {
|
||||||
|
type T;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Lt<'missing> for () { //~ ERROR undeclared lifetime
|
||||||
|
type T = &'missing (); //~ ERROR undeclared lifetime
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let _: <() as Lt<'_>>::T = &();
|
||||||
|
}
|
26
tests/ui/nll/user-annotations/region-error-ice-109072.stderr
Normal file
26
tests/ui/nll/user-annotations/region-error-ice-109072.stderr
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
error[E0261]: use of undeclared lifetime name `'missing`
|
||||||
|
--> $DIR/region-error-ice-109072.rs:8:9
|
||||||
|
|
|
||||||
|
LL | impl Lt<'missing> for () {
|
||||||
|
| - ^^^^^^^^ undeclared lifetime
|
||||||
|
| |
|
||||||
|
| help: consider introducing lifetime `'missing` here: `<'missing>`
|
||||||
|
|
||||||
|
error[E0261]: use of undeclared lifetime name `'missing`
|
||||||
|
--> $DIR/region-error-ice-109072.rs:9:15
|
||||||
|
|
|
||||||
|
LL | type T = &'missing ();
|
||||||
|
| ^^^^^^^^ undeclared lifetime
|
||||||
|
|
|
||||||
|
help: consider introducing lifetime `'missing` here
|
||||||
|
|
|
||||||
|
LL | type T<'missing> = &'missing ();
|
||||||
|
| ++++++++++
|
||||||
|
help: consider introducing lifetime `'missing` here
|
||||||
|
|
|
||||||
|
LL | impl<'missing> Lt<'missing> for () {
|
||||||
|
| ++++++++++
|
||||||
|
|
||||||
|
error: aborting due to 2 previous errors
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0261`.
|
Loading…
Reference in New Issue
Block a user