about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2017-01-19 15:49:41 -0800
committerAlex Crichton <alex@alexcrichton.com>2017-01-20 08:35:48 -0800
commitc6e4faa617f16103cb6d74a9edfbc891cbf5ce0f (patch)
tree8c8d0f4e0ff41be653d5fe628659a44b640aea48 /src
parente1129b75f8bf4aaccfaf3b2b6d618c46f998f0b0 (diff)
parentf57d5ad7e11007a50db56ebdbdde3fb7f4efd2c1 (diff)
downloadrust-c6e4faa617f16103cb6d74a9edfbc891cbf5ce0f.tar.gz
rust-c6e4faa617f16103cb6d74a9edfbc891cbf5ce0f.zip
Rollup merge of #39143 - nikomatsakis:issue-38967, r=eddyb
check inherent impls of traits for overlap as well

Simple oversight. Fixes #38967.

r? @eddyb
Diffstat (limited to 'src')
-rw-r--r--src/librustc_typeck/coherence/overlap.rs1
-rw-r--r--src/test/compile-fail/coherence-overlapping-inherent-impl-trait.rs17
2 files changed, 18 insertions, 0 deletions
diff --git a/src/librustc_typeck/coherence/overlap.rs b/src/librustc_typeck/coherence/overlap.rs
index 08293c1d874..7890ae20ec2 100644
--- a/src/librustc_typeck/coherence/overlap.rs
+++ b/src/librustc_typeck/coherence/overlap.rs
@@ -102,6 +102,7 @@ impl<'cx, 'tcx, 'v> ItemLikeVisitor<'v> for OverlapChecker<'cx, 'tcx> {
         match item.node {
             hir::ItemEnum(..) |
             hir::ItemStruct(..) |
+            hir::ItemTrait(..) |
             hir::ItemUnion(..) => {
                 let type_def_id = self.tcx.map.local_def_id(item.id);
                 self.check_for_overlapping_inherent_impls(type_def_id);
diff --git a/src/test/compile-fail/coherence-overlapping-inherent-impl-trait.rs b/src/test/compile-fail/coherence-overlapping-inherent-impl-trait.rs
new file mode 100644
index 00000000000..a611b22e93d
--- /dev/null
+++ b/src/test/compile-fail/coherence-overlapping-inherent-impl-trait.rs
@@ -0,0 +1,17 @@
+// Copyright 2016 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.
+
+#![allow(dead_code)]
+#![deny(overlapping_inherent_impls)]
+
+trait C {}
+impl C { fn f() {} } //~ ERROR duplicate definitions with name `f`
+impl C { fn f() {} }
+fn main() { }