diff options
| author | bors <bors@rust-lang.org> | 2023-02-08 00:34:18 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-02-08 00:34:18 +0000 |
| commit | b082e80e20475b1ec5b0bd0dd1dac3e6759c8022 (patch) | |
| tree | c4b4d17ca673a4f1e23e626ef0f32ddbc7c5ed54 /tests | |
| parent | 3f059f60467419823e2a63d6d20f414829040f2f (diff) | |
| parent | e2a1a2ab79dc51f7258e8bd4db3d916a4a254e7d (diff) | |
| download | rust-b082e80e20475b1ec5b0bd0dd1dac3e6759c8022.tar.gz rust-b082e80e20475b1ec5b0bd0dd1dac3e6759c8022.zip | |
Auto merge of #107688 - lukas-code:projection-with-lifetime, r=jackh726
ReErased regions are local fix https://github.com/rust-lang/rust/issues/107678 fix https://github.com/rust-lang/rust/issues/107684 fix https://github.com/rust-lang/rust/issues/107686 fix https://github.com/rust-lang/rust/issues/107691 fix https://github.com/rust-lang/rust/issues/107730
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/ui/mir/issue-107678-projection-with-lifetime.rs | 20 | ||||
| -rw-r--r-- | tests/ui/mir/issue-107691.rs | 42 | ||||
| -rw-r--r-- | tests/ui/recursion/issue-83150.stderr | 4 |
3 files changed, 65 insertions, 1 deletions
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/mir/issue-107691.rs b/tests/ui/mir/issue-107691.rs new file mode 100644 index 00000000000..517a172089f --- /dev/null +++ b/tests/ui/mir/issue-107691.rs @@ -0,0 +1,42 @@ +// build-pass +// compile-flags: -C opt-level=3 + +#![crate_type = "lib"] + +pub trait Archive { + type Archived; + type Resolver; + + fn resolve(resolver: Self::Resolver, out: *mut Self::Archived); +} + +pub type Archived<T> = <T as Archive>::Archived; +pub type Resolver<T> = <T as Archive>::Resolver; + +pub struct Record<'a> { + _payload: &'a [u8], +} + +pub struct ArchivedRecord<'a> +where + &'a [u8]: Archive, +{ + _payload: Archived<&'a [u8]>, +} + +pub struct RecordResolver<'a> +where + &'a [u8]: Archive, +{ + _payload: Resolver<&'a [u8]>, +} + +impl<'a> Archive for Record<'a> +where + &'a [u8]: Archive, +{ + type Archived = ArchivedRecord<'a>; + type Resolver = RecordResolver<'a>; + + fn resolve(_resolver: Self::Resolver, _out: *mut Self::Archived) {} +} 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' |
