mirror of https://github.com/rust-lang/rust.git
47 lines
917 B
Rust
47 lines
917 B
Rust
// https://github.com/rust-lang/rust/issues/133941
|
|
use std::marker::PhantomData;
|
|
|
|
struct Bar<'a>(PhantomData<&'a mut i32>);
|
|
|
|
impl<'a> Drop for Bar<'a> {
|
|
fn drop(&mut self) {}
|
|
}
|
|
|
|
struct Foo();
|
|
|
|
impl Foo {
|
|
fn f(&mut self) -> Option<Bar<'_>> {
|
|
None
|
|
}
|
|
|
|
fn g(&mut self) {}
|
|
}
|
|
|
|
fn main() {
|
|
let mut foo = Foo();
|
|
while let Some(_) = foo.f() {
|
|
//~^ HELP matches!
|
|
foo.g();
|
|
//~^ ERROR [E0499]
|
|
}
|
|
if let Some(_) = foo.f() {
|
|
//~^ HELP matches!
|
|
foo.g();
|
|
//~^ ERROR [E0499]
|
|
}
|
|
while let Some(_x) = foo.f() {
|
|
foo.g();
|
|
//~^ ERROR [E0499]
|
|
}
|
|
if let Some(_x) = foo.f() {
|
|
foo.g();
|
|
//~^ ERROR [E0499]
|
|
}
|
|
while let Some(_x) = {let _x = foo.f(); foo.g(); None::<()>} {
|
|
//~^ ERROR [E0499]
|
|
}
|
|
if let Some(_x) = {let _x = foo.f(); foo.g(); None::<()>} {
|
|
//~^ ERROR [E0499]
|
|
}
|
|
}
|