// run-pass #![allow(unused_variables)] // Parsing patterns with paths with type parameters (issue #22544) use std::default::Default; #[derive(Default)] pub struct Foo(T, T); impl Foo { fn foo(&self) { match *self { Foo::(ref x, ref y) => println!("Goodbye, World! {} {}", x, y) } } } trait Tr { type U; } impl Tr for Foo { type U = T; } struct Wrapper { value: T } fn main() { let Foo::(a, b) = Default::default(); let f = Foo(2,3); f.foo(); let w = Wrapper { value: Foo(10u8, 11u8) }; match w { Wrapper::> { value: Foo(10, 11) } => {}, ::Wrapper::< as Tr>::U> { value: Foo::(11, 16) } => { panic!() }, _ => { panic!() } } if let None:: = Some(8) { panic!(); } if let None:: { .. } = Some(8) { panic!(); } if let Option::None:: { .. } = Some(8) { panic!(); } }