mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 23:04:33 +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>,
|
||||
) -> ty::Region<'tcx> {
|
||||
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::RePlaceholder(..) | ty::ReLateBound(..) => {
|
||||
// We only expect region names that the user can type.
|
||||
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