about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2015-07-17 10:26:31 +0000
committerbors <bors@rust-lang.org>2015-07-17 10:26:31 +0000
commitb5dad7dcb22ed6bf8ebaae56b4339bd64f6983eb (patch)
treec6264e5f99eea0c99ac7d99c32446e7347160bfd /src/test
parent8e9bd6cd26a8f9d11188e39c52aafb4436b09990 (diff)
parented8b7ea83e4c10c9a4bd3390b5f24af23a9146dd (diff)
downloadrust-b5dad7dcb22ed6bf8ebaae56b4339bd64f6983eb.tar.gz
rust-b5dad7dcb22ed6bf8ebaae56b4339bd64f6983eb.zip
Auto merge of #27082 - Manishearth:rollup, r=Manishearth
- Successful merges: #25993, #27038, #27069, #27070, #27080
- Failed merges: #27034, #27064
Diffstat (limited to 'src/test')
-rw-r--r--src/test/compile-fail/associated-item-duplicate-names-2.rs20
-rw-r--r--src/test/compile-fail/associated-item-duplicate-names-3.rs28
-rw-r--r--src/test/compile-fail/associated-item-duplicate-names.rs30
3 files changed, 78 insertions, 0 deletions
diff --git a/src/test/compile-fail/associated-item-duplicate-names-2.rs b/src/test/compile-fail/associated-item-duplicate-names-2.rs
new file mode 100644
index 00000000000..6a7eaecae7f
--- /dev/null
+++ b/src/test/compile-fail/associated-item-duplicate-names-2.rs
@@ -0,0 +1,20 @@
+// 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.
+
+#![feature(associated_consts)]
+
+struct Foo;
+
+impl Foo {
+    const bar: bool = true;
+    fn bar() {} //~ ERROR duplicate associated function
+}
+
+fn main() {}
diff --git a/src/test/compile-fail/associated-item-duplicate-names-3.rs b/src/test/compile-fail/associated-item-duplicate-names-3.rs
new file mode 100644
index 00000000000..7c4c5ca6b4e
--- /dev/null
+++ b/src/test/compile-fail/associated-item-duplicate-names-3.rs
@@ -0,0 +1,28 @@
+// 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.
+//
+// Before the introduction of the "duplicate associated type" error, the
+// program below used to result in the "ambiguous associated type" error E0223,
+// which is unexpected.
+
+trait Foo {
+    type Bar;
+}
+
+struct Baz;
+
+impl Foo for Baz {
+    type Bar = i16;
+    type Bar = u16; //~ ERROR duplicate associated type
+}
+
+fn main() {
+    let x: Baz::Bar = 5;
+}
diff --git a/src/test/compile-fail/associated-item-duplicate-names.rs b/src/test/compile-fail/associated-item-duplicate-names.rs
new file mode 100644
index 00000000000..4c484b49024
--- /dev/null
+++ b/src/test/compile-fail/associated-item-duplicate-names.rs
@@ -0,0 +1,30 @@
+// 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.
+
+// Test for issue #23969
+
+#![feature(associated_consts)]
+
+trait Foo {
+    type Ty;
+    const BAR: u32;
+}
+
+impl Foo for () {
+    type Ty = ();
+    type Ty = usize; //~ ERROR duplicate associated type
+    const BAR: u32 = 7;
+    const BAR: u32 = 8; //~ ERROR duplicate associated constant
+}
+
+fn main() {
+    let _: <() as Foo>::Ty = ();
+    let _: u32 = <() as Foo>::BAR;
+}