about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-09-27 01:36:15 -0700
committerbors <bors@rust-lang.org>2013-09-27 01:36:15 -0700
commitafbc242a20ec871dfeda84cf1412b34f756e9f7a (patch)
tree5c17fb0ea75063c9ef692844d33bb0fee803e1c7 /src
parentd6774f8c3992332c8958b10582083d3cff1bd5e1 (diff)
parenta4b7474461f5ea96eb895adef7f17a079b42bad5 (diff)
downloadrust-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.rs4
-rw-r--r--src/test/run-pass/issue-9394-inherited-trait-calls.rs9
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");
 }