//@revisions: edition2015 edition2021 //@[edition2015] edition:2015 //@[edition2021] edition:2021 #![allow(unused, bare_trait_objects)] #[repr(align(256))] struct A { v: u8, } trait Foo { fn foo(&self); } impl Foo for A { fn foo(&self) { assert_eq!(self as *const A as usize % 256, 0); } } fn foo(x: dyn Foo) { //~ ERROR [E0277] x.foo() } fn bar(x: Foo) { //[edition2015]~^ ERROR [E0277] //[edition2021]~^^ ERROR expected a type, found a trait x.foo() } fn qux(_: [()]) {} //~ ERROR [E0277] fn main() { let x: Box = Box::new(A { v: 22 }); foo(*x); //~ ERROR [E0277] }