//@ edition:2021 trait Trait {} struct IceCream; impl IceCream { fn foo(_: &Trait) {} //~^ ERROR: expected a type, found a trait fn bar(self, _: &'a Trait) {} //~^ ERROR: expected a type, found a trait //~| ERROR: use of undeclared lifetime name fn alice<'a>(&self, _: &Trait) {} //~^ ERROR: expected a type, found a trait fn bob<'a>(_: &'a Trait) {} //~^ ERROR: expected a type, found a trait fn cat() -> &Trait { //~^ ERROR: missing lifetime specifier //~| ERROR: expected a type, found a trait &Type } fn dog<'a>() -> &Trait { //~^ ERROR: missing lifetime specifier //~| ERROR: expected a type, found a trait &Type } fn kitten() -> &'a Trait { //~^ ERROR: use of undeclared lifetime name //~| ERROR: expected a type, found a trait &Type } fn puppy<'a>() -> &'a Trait { //~^ ERROR: expected a type, found a trait &Type } fn parrot() -> &mut Trait { //~^ ERROR: missing lifetime specifier //~| ERROR: expected a type, found a trait &mut Type } } trait Sing { fn foo(_: &Trait); //~^ ERROR: expected a type, found a trait fn bar(_: &'a Trait); //~^ ERROR: expected a type, found a trait //~| ERROR: use of undeclared lifetime name fn alice<'a>(_: &Trait); //~^ ERROR: expected a type, found a trait fn bob<'a>(_: &'a Trait); //~^ ERROR: expected a type, found a trait fn cat() -> &Trait; //~^ ERROR: missing lifetime specifier //~| ERROR: expected a type, found a trait fn dog<'a>() -> &Trait { //~^ ERROR: missing lifetime specifier //~| ERROR: expected a type, found a trait &Type } fn kitten() -> &'a Trait { //~^ ERROR: use of undeclared lifetime name //~| ERROR: expected a type, found a trait &Type } fn puppy<'a>() -> &'a Trait { //~^ ERROR: expected a type, found a trait &Type } fn parrot() -> &mut Trait { //~^ ERROR: missing lifetime specifier //~| ERROR: expected a type, found a trait &mut Type } } fn foo(_: &Trait) {} //~^ ERROR: expected a type, found a trait fn bar(_: &'a Trait) {} //~^ ERROR: expected a type, found a trait //~| ERROR: use of undeclared lifetime name fn alice<'a>(_: &Trait) {} //~^ ERROR: expected a type, found a trait fn bob<'a>(_: &'a Trait) {} //~^ ERROR: expected a type, found a trait struct Type; impl Trait for Type {} fn cat() -> &Trait { //~^ ERROR: missing lifetime specifier //~| ERROR: expected a type, found a trait &Type } fn dog<'a>() -> &Trait { //~^ ERROR: missing lifetime specifier //~| ERROR: expected a type, found a trait &Type } fn kitten() -> &'a Trait { //~^ ERROR: use of undeclared lifetime name //~| ERROR: expected a type, found a trait &Type } fn puppy<'a>() -> &'a Trait { //~^ ERROR: expected a type, found a trait &Type } fn parrot() -> &mut Trait { //~^ ERROR: missing lifetime specifier //~| ERROR: expected a type, found a trait &mut Type } fn main() {}