diff options
| author | Nick Hamann <nick@wabbo.org> | 2015-10-22 14:53:01 -0500 |
|---|---|---|
| committer | Nick Hamann <nick@wabbo.org> | 2015-10-22 17:12:16 -0500 |
| commit | f0af1eb110b3dd12754b02bc3dcb7127ea2dce7f (patch) | |
| tree | 55c04afff812ba379cdc9fbc69236cd6a9ef1691 /src/test | |
| parent | 5692e16270ad844e89aa56859d5f8311159e2eea (diff) | |
| download | rust-f0af1eb110b3dd12754b02bc3dcb7127ea2dce7f.tar.gz rust-f0af1eb110b3dd12754b02bc3dcb7127ea2dce7f.zip | |
Warn when creating a module and a struct that both have the same name.
Currently it is possible to do the following: - define a module named `Foo` and then a unit or tuple struct also named `Foo` - define any struct named `Foo` and then a module named `Foo` This commit introduces a warning for both of these cases.
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/compile-fail/issue-21546.rs | 65 | ||||
| -rw-r--r-- | src/test/run-pass/issue-14564.rs | 15 |
2 files changed, 65 insertions, 15 deletions
diff --git a/src/test/compile-fail/issue-21546.rs b/src/test/compile-fail/issue-21546.rs new file mode 100644 index 00000000000..bb1bcd4e871 --- /dev/null +++ b/src/test/compile-fail/issue-21546.rs @@ -0,0 +1,65 @@ +// Copyright 2015 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// Also works as a test for #14564 + +#[allow(non_snake_case)] +mod Foo { } +//~^ NOTE first definition of type or module `Foo` + +#[allow(dead_code)] +struct Foo; +//~^ WARNING duplicate definition of type or module `Foo` + + +#[allow(non_snake_case)] +mod Bar { } +//~^ NOTE first definition of type or module `Bar` + +#[allow(dead_code)] +struct Bar(i32); +//~^ WARNING duplicate definition of type or module `Bar` + + +#[allow(dead_code)] +struct Baz(i32); +//~^ NOTE first definition of type or module + +#[allow(non_snake_case)] +mod Baz { } +//~^ WARNING duplicate definition of type or module `Baz` + + +#[allow(dead_code)] +struct Qux { x: bool } +//~^ NOTE first definition of type or module + +#[allow(non_snake_case)] +mod Qux { } +//~^ WARNING duplicate definition of type or module `Qux` + + +#[allow(dead_code)] +struct Quux; +//~^ NOTE first definition of type or module + +#[allow(non_snake_case)] +mod Quux { } +//~^ WARNING duplicate definition of type or module `Quux` + + +#[allow(dead_code)] +enum Corge { A, B } + +#[allow(non_snake_case)] +mod Corge { } +//~^ ERROR duplicate definition of type or module `Corge` + +fn main() { } diff --git a/src/test/run-pass/issue-14564.rs b/src/test/run-pass/issue-14564.rs deleted file mode 100644 index a661437a44c..00000000000 --- a/src/test/run-pass/issue-14564.rs +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2015 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -mod Foo { } -struct Foo; -impl Foo { } - -fn main() { } |
