]> git.proxmox.com Git - rustc.git/blame - src/test/ui/pattern/issue-22546.rs
New upstream version 1.66.0+dfsg1
[rustc.git] / src / test / ui / pattern / issue-22546.rs
CommitLineData
b7449926 1// run-pass
0bf4aa26 2#![allow(unused_variables)]
9346a6ac
AL
3// Parsing patterns with paths with type parameters (issue #22544)
4
5use std::default::Default;
6
7#[derive(Default)]
8pub struct Foo<T>(T, T);
9
10impl<T: ::std::fmt::Display> Foo<T> {
11 fn foo(&self) {
12 match *self {
13 Foo::<T>(ref x, ref y) => println!("Goodbye, World! {} {}", x, y)
14 }
15 }
16}
17
18trait Tr {
19 type U;
20}
21
22impl<T> Tr for Foo<T> {
23 type U = T;
24}
25
26struct Wrapper<T> {
27 value: T
28}
29
30fn main() {
31 let Foo::<i32>(a, b) = Default::default();
32
33 let f = Foo(2,3);
34 f.foo();
35
36 let w = Wrapper { value: Foo(10u8, 11u8) };
37 match w {
38 Wrapper::<Foo<u8>> { value: Foo(10, 11) } => {},
39 ::Wrapper::<<Foo<_> as Tr>::U> { value: Foo::<u8>(11, 16) } => { panic!() },
40 _ => { panic!() }
41 }
42
43 if let None::<u8> = Some(8) {
44 panic!();
45 }
c30ab7b3
SL
46 if let None::<u8> { .. } = Some(8) {
47 panic!();
48 }
49 if let Option::None::<u8> { .. } = Some(8) {
50 panic!();
51 }
9346a6ac 52}