diff options
| author | bors <bors@rust-lang.org> | 2013-09-27 01:36:15 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-09-27 01:36:15 -0700 |
| commit | afbc242a20ec871dfeda84cf1412b34f756e9f7a (patch) | |
| tree | 5c17fb0ea75063c9ef692844d33bb0fee803e1c7 /src | |
| parent | d6774f8c3992332c8958b10582083d3cff1bd5e1 (diff) | |
| parent | a4b7474461f5ea96eb895adef7f17a079b42bad5 (diff) | |
| download | rust-afbc242a20ec871dfeda84cf1412b34f756e9f7a.tar.gz rust-afbc242a20ec871dfeda84cf1412b34f756e9f7a.zip | |
auto merge of #9527 : bmaxa/rust/master, r=alexcrichton
that is, if super trait had more methods, tnen subtrait, compiling would fail. I simply forgot to update variable name. Updated test case , too.
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc/middle/typeck/check/method.rs | 4 | ||||
| -rw-r--r-- | src/test/run-pass/issue-9394-inherited-trait-calls.rs | 9 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/librustc/middle/typeck/check/method.rs b/src/librustc/middle/typeck/check/method.rs index 60712769de5..3cc93d3fea9 100644 --- a/src/librustc/middle/typeck/check/method.rs +++ b/src/librustc/middle/typeck/check/method.rs @@ -431,10 +431,10 @@ impl<'self> LookupContext<'self> { Candidate { rcvr_match_condition: RcvrMatchesIfObject(did), - rcvr_substs: trait_ref.substs.clone(), + rcvr_substs: new_trait_ref.substs.clone(), method_ty: m, origin: method_object(method_object { - trait_id: trait_ref.def_id, + trait_id: new_trait_ref.def_id, object_trait_id: did, method_num: method_num, real_index: vtable_index diff --git a/src/test/run-pass/issue-9394-inherited-trait-calls.rs b/src/test/run-pass/issue-9394-inherited-trait-calls.rs index e60f8d4c888..f2ee9206957 100644 --- a/src/test/run-pass/issue-9394-inherited-trait-calls.rs +++ b/src/test/run-pass/issue-9394-inherited-trait-calls.rs @@ -10,6 +10,10 @@ trait Base: Base2 + Base3{ fn foo(&self) -> ~str; + fn foo1(&self) -> ~str; + fn foo2(&self) -> ~str{ + ~"base foo2" + } } trait Base2: Base3{ @@ -30,6 +34,9 @@ impl Base for X { fn foo(&self) -> ~str{ ~"base foo" } + fn foo1(&self) -> ~str{ + ~"base foo1" + } } @@ -56,6 +63,8 @@ pub fn main() { let s = &n as &Super; assert_eq!(s.bar(),~"super bar"); assert_eq!(s.foo(),~"base foo"); + assert_eq!(s.foo1(),~"base foo1"); + assert_eq!(s.foo2(),~"base foo2"); assert_eq!(s.baz(),~"base2 baz"); assert_eq!(s.root(),~"base3 root"); } |
