File tree Expand file tree Collapse file tree 3 files changed +34
-1
lines changed Expand file tree Collapse file tree 3 files changed +34
-1
lines changed Original file line number Diff line number Diff line change @@ -13,7 +13,7 @@ refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0
13
13
refs/tags/release-0.3.1: 495bae036dfe5ec6ceafd3312b4dca48741e845b
14
14
refs/tags/release-0.4: e828ea2080499553b97dfe33b3f4d472b4562ad7
15
15
refs/tags/release-0.5: 7e3bcfbf21278251ee936ad53e92e9b719702d73
16
- refs/heads/auto: 1f4c63049ed2e323ba2961c19dc067f86dd61861
16
+ refs/heads/auto: 1607871dc2a5240177865210822238f66c1dfb2e
17
17
refs/heads/servo: af82457af293e2a842ba6b7759b70288da276167
18
18
refs/tags/release-0.6: b4ebcfa1812664df5e142f0134a5faea3918544c
19
19
refs/tags/0.1: b19db808c2793fe2976759b85a355c3ad8c8b336
Original file line number Diff line number Diff line change @@ -48,6 +48,8 @@ use util::ppaux::Repr;
48
48
use std:: rc:: Rc ;
49
49
use std:: vec_ng:: Vec ;
50
50
use std:: vec_ng;
51
+ use collections:: HashSet ;
52
+
51
53
use syntax:: abi:: AbiSet ;
52
54
use syntax:: ast:: { RegionTyParamBound , TraitTyParamBound } ;
53
55
use syntax:: ast;
@@ -478,7 +480,12 @@ fn convert_methods(ccx: &CrateCtxt,
478
480
rcvr_visibility : ast:: Visibility )
479
481
{
480
482
let tcx = ccx. tcx ;
483
+ let mut seen_methods = HashSet :: new ( ) ;
481
484
for m in ms. iter ( ) {
485
+ if !seen_methods. insert ( m. ident . repr ( ccx. tcx ) ) {
486
+ tcx. sess . span_err ( m. span , "duplicate method in trait impl" ) ;
487
+ }
488
+
482
489
let num_rcvr_ty_params = rcvr_ty_generics. type_param_defs ( ) . len ( ) ;
483
490
let m_ty_generics = ty_generics_for_fn_or_method ( ccx, & m. generics ,
484
491
num_rcvr_ty_params) ;
Original file line number Diff line number Diff line change
1
+ // Copyright 2013 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
+
11
+ // Test that duplicate methods in impls are not allowed
12
+
13
+ struct Foo ;
14
+
15
+ trait Bar {
16
+ fn bar ( & self ) -> int ;
17
+ }
18
+
19
+ impl Bar for Foo {
20
+ fn bar ( & self ) -> int { 1 }
21
+ fn bar ( & self ) -> int { 2 } //~ ERROR duplicate method
22
+ }
23
+
24
+ fn main ( ) {
25
+ println ! ( "{}" , Foo . bar( ) ) ;
26
+ }
You can’t perform that action at this time.
0 commit comments