diff options
| author | Lukas Markeffsky <@> | 2023-02-05 15:29:07 +0100 |
|---|---|---|
| committer | Lukas Markeffsky <@> | 2023-02-05 15:29:07 +0100 |
| commit | 9d110847ab7f6aef56a8cd20cb6cea4fbcc51cd9 (patch) | |
| tree | ae1eee31a38c476c5f552437475f5c2482266561 | |
| parent | 2a6ff729233c62d1d991da5ed4d01aa29e59d637 (diff) | |
| download | rust-9d110847ab7f6aef56a8cd20cb6cea4fbcc51cd9.tar.gz rust-9d110847ab7f6aef56a8cd20cb6cea4fbcc51cd9.zip | |
ReErased regions are local
| -rw-r--r-- | compiler/rustc_type_ir/src/lib.rs | 3 | ||||
| -rw-r--r-- | tests/ui/mir/issue-107678-projection-with-lifetime.rs | 20 | ||||
| -rw-r--r-- | tests/ui/recursion/issue-83150.stderr | 4 |
3 files changed, 25 insertions, 2 deletions
diff --git a/compiler/rustc_type_ir/src/lib.rs b/compiler/rustc_type_ir/src/lib.rs index d5de457a82c..4aa958878d4 100644 --- a/compiler/rustc_type_ir/src/lib.rs +++ b/compiler/rustc_type_ir/src/lib.rs @@ -220,7 +220,8 @@ bitflags! { // which is different from how types/const are freshened. | TypeFlags::HAS_TY_FRESH.bits | TypeFlags::HAS_CT_FRESH.bits - | TypeFlags::HAS_FREE_LOCAL_REGIONS.bits; + | TypeFlags::HAS_FREE_LOCAL_REGIONS.bits + | TypeFlags::HAS_RE_ERASED.bits; /// Does this have `Projection`? const HAS_TY_PROJECTION = 1 << 10; diff --git a/tests/ui/mir/issue-107678-projection-with-lifetime.rs b/tests/ui/mir/issue-107678-projection-with-lifetime.rs new file mode 100644 index 00000000000..14a45687875 --- /dev/null +++ b/tests/ui/mir/issue-107678-projection-with-lifetime.rs @@ -0,0 +1,20 @@ +// build-pass + +#![crate_type = "lib"] + +pub trait StreamOnce { + type Error; +} + +pub trait ResetStream: StreamOnce { + fn reset(&mut self) -> Result<(), Self::Error>; +} + +impl<'a> ResetStream for &'a str + where Self: StreamOnce +{ + #[inline] + fn reset(&mut self) -> Result<(), Self::Error> { + Ok(()) + } +} diff --git a/tests/ui/recursion/issue-83150.stderr b/tests/ui/recursion/issue-83150.stderr index dde8ad1b6b3..64683ae3a6e 100644 --- a/tests/ui/recursion/issue-83150.stderr +++ b/tests/ui/recursion/issue-83150.stderr @@ -9,9 +9,11 @@ LL | func(&mut iter.map(|x| x + 1)) = help: a `loop` may express intention better if this is on purpose = note: `#[warn(unconditional_recursion)]` on by default -error[E0275]: overflow evaluating the requirement `Map<&mut Map<&mut Map<&mut Map<..., ...>, ...>, ...>, ...>: Iterator` +error[E0275]: overflow evaluating the requirement `Map<&mut std::ops::Range<u8>, [closure@$DIR/issue-83150.rs:12:24: 12:27]>: Iterator` | = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`issue_83150`) + = note: required for `&mut Map<&mut std::ops::Range<u8>, [closure@$DIR/issue-83150.rs:12:24: 12:27]>` to implement `Iterator` + = note: 65 redundant requirements hidden = note: required for `&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<..., ...>, ...>, ...>, ...>, ...>, ...>, ...>` to implement `Iterator` = note: the full type name has been written to '$TEST_BUILD_DIR/recursion/issue-83150/issue-83150.long-type-hash.txt' |
