Commit 8762fc3 1 parent 09af503 commit 8762fc3 Copy full SHA for 8762fc3
File tree 2 files changed +77
-0
lines changed
2 files changed +77
-0
lines changed Original file line number Diff line number Diff line change
1
+ // Copyright 2016 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
+ // Check we do not select a private method or field when computing autoderefs
12
+
13
+ #![ feature( rustc_attrs) ]
14
+ #![ allow( unused) ]
15
+
16
+ pub struct Bar2 { i : i32 }
17
+ pub struct Baz2 ( i32 ) ;
18
+
19
+ impl Bar2 {
20
+ fn f ( & self ) { }
21
+ }
22
+
23
+ mod foo {
24
+ pub struct Bar { i : i32 }
25
+ pub struct Baz ( i32 ) ;
26
+
27
+ impl Bar {
28
+ fn f ( & self ) { }
29
+ }
30
+
31
+ impl :: std:: ops:: Deref for Bar {
32
+ type Target = :: Bar2 ;
33
+ fn deref ( & self ) -> & :: Bar2 { unimplemented ! ( ) }
34
+ }
35
+
36
+ impl :: std:: ops:: Deref for Baz {
37
+ type Target = :: Baz2 ;
38
+ fn deref ( & self ) -> & :: Baz2 { unimplemented ! ( ) }
39
+ }
40
+ }
41
+
42
+ fn f ( bar : foo:: Bar , baz : foo:: Baz ) {
43
+ let _ = bar. i ;
44
+ let _ = baz. 0 ;
45
+ let _ = bar. f ( ) ;
46
+ }
47
+
48
+ #[ rustc_error]
49
+ fn main ( ) { } //~ ERROR compilation successful
Original file line number Diff line number Diff line change
1
+ // Copyright 2016 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
+ mod foo {
12
+ pub struct Foo ;
13
+ impl Foo {
14
+ fn bar ( & self ) { }
15
+ }
16
+
17
+ pub trait Baz {
18
+ fn bar ( & self ) -> bool { }
19
+ }
20
+ impl Baz for Foo { }
21
+ }
22
+
23
+ fn main ( ) {
24
+ use foo:: Baz ;
25
+
26
+ // Check that `bar` resolves to the trait method, not the inherent impl method.
27
+ let _: ( ) = foo:: Foo . bar ( ) ; //~ ERROR mismatched types
28
+ }
You can’t perform that action at this time.
0 commit comments