44 lines
716 B
Rust
44 lines
716 B
Rust
//@ revisions: good1 good2 bad1 bad2
|
|
//@[good1] check-pass
|
|
//@[good2] check-pass
|
|
|
|
use std::ops::Drop;
|
|
|
|
struct DropMe<'a, T>(&'a T);
|
|
|
|
#[cfg(good1)]
|
|
impl<'a, T> Drop for DropMe<'a, T>
|
|
where
|
|
T: 'a, // Implied by struct, explicit on impl
|
|
{
|
|
fn drop(&mut self) {}
|
|
}
|
|
|
|
#[cfg(good2)]
|
|
impl<'a, T> Drop for DropMe<'a, T>
|
|
where
|
|
'static: 'a, // Trivial bound
|
|
{
|
|
fn drop(&mut self) {}
|
|
}
|
|
|
|
#[cfg(bad1)]
|
|
impl<'a, T> Drop for DropMe<'a, T>
|
|
where
|
|
T: 'static,
|
|
//[bad1]~^ ERROR `Drop` impl requires `T: 'static`
|
|
{
|
|
fn drop(&mut self) {}
|
|
}
|
|
|
|
#[cfg(bad2)]
|
|
impl<'a, T> Drop for DropMe<'a, T>
|
|
where
|
|
'a: 'static,
|
|
//[bad2]~^ ERROR `Drop` impl requires `'a: 'static`
|
|
{
|
|
fn drop(&mut self) {}
|
|
}
|
|
|
|
fn main() {}
|