diff options
Diffstat (limited to 'src/test/ui/destructure-trait-ref.rs')
-rw-r--r-- | src/test/ui/destructure-trait-ref.rs | 44 |
1 files changed, 0 insertions, 44 deletions
diff --git a/src/test/ui/destructure-trait-ref.rs b/src/test/ui/destructure-trait-ref.rs deleted file mode 100644 index 50b64aeeb..000000000 --- a/src/test/ui/destructure-trait-ref.rs +++ /dev/null @@ -1,44 +0,0 @@ -// The regression test for #15031 to make sure destructuring trait -// reference work properly. - -#![feature(box_patterns)] - -trait T { fn foo(&self) {} } -impl T for isize {} - - -fn main() { - // For an expression of the form: - // - // let &...&x = &..&SomeTrait; - // - // Say we have n `&` at the left hand and m `&` right hand, then: - // if n < m, we are golden; - // if n == m, it's a derefing non-derefable type error; - // if n > m, it's a type mismatch error. - - // n < m - let &x = &(&1isize as &dyn T); - let &x = &&(&1isize as &dyn T); - let &&x = &&(&1isize as &dyn T); - - // n == m - let &x = &1isize as &dyn T; //~ ERROR type `&dyn T` cannot be dereferenced - let &&x = &(&1isize as &dyn T); //~ ERROR type `&dyn T` cannot be dereferenced - let box x = Box::new(1isize) as Box<dyn T>; - //~^ ERROR type `Box<dyn T>` cannot be dereferenced - - // n > m - let &&x = &1isize as &dyn T; - //~^ ERROR mismatched types - //~| expected trait object `dyn T` - //~| found reference `&_` - let &&&x = &(&1isize as &dyn T); - //~^ ERROR mismatched types - //~| expected trait object `dyn T` - //~| found reference `&_` - let box box x = Box::new(1isize) as Box<dyn T>; - //~^ ERROR mismatched types - //~| expected trait object `dyn T` - //~| found struct `Box<_>` -} |