diff options
Diffstat (limited to '')
-rw-r--r-- | tests/ui/feature-gates/feature-gate-unsized_fn_params.rs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/ui/feature-gates/feature-gate-unsized_fn_params.rs b/tests/ui/feature-gates/feature-gate-unsized_fn_params.rs new file mode 100644 index 000000000..c04e57843 --- /dev/null +++ b/tests/ui/feature-gates/feature-gate-unsized_fn_params.rs @@ -0,0 +1,30 @@ +#![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) { //~ ERROR [E0277] + x.foo() +} + +fn qux(_: [()]) {} //~ ERROR [E0277] + +fn main() { + let x: Box<dyn Foo> = Box::new(A { v: 22 }); + foo(*x); //~ ERROR [E0277] +} |