about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorNick Hamann <nick@wabbo.org>2015-10-22 14:53:01 -0500
committerNick Hamann <nick@wabbo.org>2015-10-22 17:12:16 -0500
commitf0af1eb110b3dd12754b02bc3dcb7127ea2dce7f (patch)
tree55c04afff812ba379cdc9fbc69236cd6a9ef1691 /src/test
parent5692e16270ad844e89aa56859d5f8311159e2eea (diff)
downloadrust-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.rs65
-rw-r--r--src/test/run-pass/issue-14564.rs15
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() { }