]> git.lizzy.rs Git - rust.git/blob - tests/compile-fail/non_expressive_names.rs
d959507bcb2b002584e05cc7831e44bf49c22a26
[rust.git] / tests / compile-fail / non_expressive_names.rs
1 #![feature(plugin)]
2 #![plugin(clippy)]
3 #![deny(clippy,similar_names)]
4 //~^ NOTE: lint level defined here
5 //~| NOTE: lint level defined here
6 //~| NOTE: lint level defined here
7 //~| NOTE: lint level defined here
8 //~| NOTE: lint level defined here
9 //~| NOTE: lint level defined here
10 //~| NOTE: lint level defined here
11 //~| NOTE: lint level defined here
12 //~| NOTE: lint level defined here
13 //~| NOTE: lint level defined here
14 //~| NOTE: lint level defined here
15 #![allow(unused)]
16
17
18 struct Foo {
19     apple: i32,
20     bpple: i32,
21 }
22
23 fn main() {
24     let specter: i32;
25     let spectre: i32;
26
27     let apple: i32; //~ NOTE: existing binding defined here
28     //~^ NOTE: existing binding defined here
29     let bpple: i32; //~ ERROR: name is too similar
30     //~| HELP: separate the discriminating character by an underscore like: `b_pple`
31     //~| HELP: for further information visit
32     let cpple: i32; //~ ERROR: name is too similar
33     //~| HELP: separate the discriminating character by an underscore like: `c_pple`
34     //~| HELP: for further information visit
35
36     let a_bar: i32;
37     let b_bar: i32;
38     let c_bar: i32;
39
40     let items = [5];
41     for item in &items {
42         loop {}
43     }
44
45     let foo_x: i32;
46     let foo_y: i32;
47
48     let rhs: i32;
49     let lhs: i32;
50
51     let bla_rhs: i32;
52     let bla_lhs: i32;
53
54     let blubrhs: i32;
55     let blublhs: i32;
56
57     let blubx: i32; //~ NOTE: existing binding defined here
58     let bluby: i32; //~ ERROR: name is too similar
59     //~| HELP: for further information visit
60     //~| HELP: separate the discriminating character by an underscore like: `blub_y`
61
62     let cake: i32; //~ NOTE: existing binding defined here
63     let cakes: i32;
64     let coke: i32; //~ ERROR: name is too similar
65     //~| HELP: for further information visit
66
67     match 5 {
68         cheese @ 1 => {},
69         rabbit => panic!(),
70     }
71     let cheese: i32;
72     match (42, 43) {
73         (cheese1, 1) => {},
74         (cheese2, 2) => panic!(),
75         _ => println!(""),
76     }
77     let ipv4: i32;
78     let ipv6: i32;
79     let abcd1: i32;
80     let abdc2: i32;
81     let xyz1abc: i32; //~ NOTE: existing binding defined here
82     let xyz2abc: i32;
83     let xyzeabc: i32; //~ ERROR: name is too similar
84     //~| HELP: for further information visit
85
86     let parser: i32; //~ NOTE: existing binding defined here
87     let parsed: i32;
88     let parsee: i32; //~ ERROR: name is too similar
89     //~| HELP: for further information visit
90     //~| HELP: separate the discriminating character by an underscore like: `parse_e`
91
92     let setter: i32;
93     let getter: i32;
94     let tx1: i32;
95     let rx1: i32;
96     let tx_cake: i32;
97     let rx_cake: i32;
98 }
99
100 fn foo() {
101     let Foo { apple, bpple } = unimplemented!();
102     let Foo { apple: spring, //~NOTE existing binding defined here
103         bpple: sprang } = unimplemented!(); //~ ERROR: name is too similar
104     //~^HELP for further information
105 }
106
107 #[derive(Clone, Debug)]
108 enum MaybeInst {
109     Split,
110     Split1(usize),
111     Split2(usize),
112 }
113
114 struct InstSplit {
115     uiae: usize,
116 }
117
118 impl MaybeInst {
119     fn fill(&mut self) {
120         let filled = match *self {
121             MaybeInst::Split1(goto1) => panic!(1),
122             MaybeInst::Split2(goto2) => panic!(2),
123             _ => unimplemented!(),
124         };
125         unimplemented!()
126     }
127 }
128
129 fn bla() {
130     let a: i32;
131     let (b, c, d): (i32, i64, i16);
132     {
133         {
134             let cdefg: i32;
135             let blar: i32;
136         }
137         {
138             let e: i32; //~ ERROR: 5th binding whose name is just one char
139             //~| HELP: for further information visit
140         }
141         {
142             let e: i32; //~ ERROR: 5th binding whose name is just one char
143             //~| HELP: for further information visit
144             let f: i32; //~ ERROR: 6th binding whose name is just one char
145             //~| HELP: for further information visit
146         }
147         match 5 {
148             1 => println!(""),
149             e => panic!(), //~ ERROR: 5th binding whose name is just one char
150             //~| HELP: for further information visit
151         }
152         match 5 {
153             1 => println!(""),
154             _ => panic!(),
155         }
156     }
157 }