]>
Commit | Line | Data |
---|---|---|
223e47cc LB |
1 | // Copyright 2012 The Rust Project Developers. See the COPYRIGHT |
2 | // file at the top-level directory of this distribution and at | |
3 | // http://rust-lang.org/COPYRIGHT. | |
4 | // | |
5 | // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or | |
6 | // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license | |
7 | // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your | |
8 | // option. This file may not be copied, modified, or distributed | |
9 | // except according to those terms. | |
10 | ||
1a4d82fc JJ |
11 | #![deny(unused_imports)] |
12 | #![allow(dead_code)] | |
223e47cc | 13 | |
1a4d82fc | 14 | use bar::c::cc as cal; |
223e47cc | 15 | |
1a4d82fc JJ |
16 | use std::mem::*; // shouldn't get errors for not using |
17 | // everything imported | |
223e47cc LB |
18 | |
19 | // Should get errors for both 'Some' and 'None' | |
c30ab7b3 SL |
20 | use std::option::Option::{Some, None}; //~ ERROR unused import: `Some` |
21 | //~^ ERROR unused import: `None` | |
223e47cc | 22 | |
c30ab7b3 | 23 | use test::A; //~ ERROR unused import: `test::A` |
223e47cc LB |
24 | // Be sure that if we just bring some methods into scope that they're also |
25 | // counted as being used. | |
1a4d82fc | 26 | use test::B; |
a7813a04 | 27 | // But only when actually used: do not get confused by the method with the same name. |
c30ab7b3 | 28 | use test::B2; //~ ERROR unused import: `test::B2` |
223e47cc LB |
29 | |
30 | // Make sure this import is warned about when at least one of its imported names | |
31 | // is unused | |
c30ab7b3 | 32 | use test2::{foo, bar}; //~ ERROR unused import: `bar` |
1a4d82fc JJ |
33 | |
34 | mod test2 { | |
35 | pub fn foo() {} | |
36 | pub fn bar() {} | |
37 | } | |
38 | ||
39 | mod test { | |
40 | pub trait A { fn a(&self) {} } | |
41 | pub trait B { fn b(&self) {} } | |
a7813a04 | 42 | pub trait B2 { fn b(&self) {} } |
1a4d82fc JJ |
43 | pub struct C; |
44 | impl A for C {} | |
45 | impl B for C {} | |
46 | } | |
223e47cc LB |
47 | |
48 | mod foo { | |
1a4d82fc JJ |
49 | pub struct Point{pub x: isize, pub y: isize} |
50 | pub struct Square{pub p: Point, pub h: usize, pub w: usize} | |
223e47cc LB |
51 | } |
52 | ||
53 | mod bar { | |
54 | // Don't ignore on 'pub use' because we're not sure if it's used or not | |
1a4d82fc | 55 | pub use std::cmp::PartialEq; |
9cc50fc6 | 56 | pub struct Square; |
223e47cc LB |
57 | |
58 | pub mod c { | |
59 | use foo::Point; | |
c30ab7b3 | 60 | use foo::Square; //~ ERROR unused import: `foo::Square` |
9cc50fc6 | 61 | pub fn cc(_p: Point) -> super::Square { |
7453a54e SL |
62 | fn f() -> super::Square { |
63 | super::Square | |
64 | } | |
65 | f() | |
9cc50fc6 | 66 | } |
223e47cc LB |
67 | } |
68 | ||
69 | #[allow(unused_imports)] | |
70 | mod foo { | |
1a4d82fc | 71 | use std::cmp::PartialEq; |
223e47cc LB |
72 | } |
73 | } | |
74 | ||
7453a54e | 75 | fn g() { |
c30ab7b3 | 76 | use self::g; //~ ERROR unused import: `self::g` |
7453a54e SL |
77 | fn f() { |
78 | self::g(); | |
79 | } | |
80 | } | |
81 | ||
5bcae85e SL |
82 | // c.f. issue #35135 |
83 | #[allow(unused_variables)] | |
84 | fn h() { | |
c30ab7b3 | 85 | use test2::foo; //~ ERROR unused import: `test2::foo` |
5bcae85e SL |
86 | let foo = 0; |
87 | } | |
88 | ||
223e47cc LB |
89 | fn main() { |
90 | cal(foo::Point{x:3, y:9}); | |
85aaf69f SL |
91 | let mut a = 3; |
92 | let mut b = 4; | |
1a4d82fc JJ |
93 | swap(&mut a, &mut b); |
94 | test::C.b(); | |
95 | let _a = foo(); | |
223e47cc | 96 | } |