about summary refs log tree commit diff
path: root/src/rustc
diff options
context:
space:
mode:
authorTim Chevalier <chevalier@alum.wellesley.edu>2012-05-29 16:49:40 -0700
committerTim Chevalier <chevalier@alum.wellesley.edu>2012-05-29 16:50:21 -0700
commit8d7765be82326742b18a3cbc707192a3e8065fc1 (patch)
tree456cf5b804e7196b47c50fda548b17391c53b7bb /src/rustc
parentf90228b8a82deb8da178d32322057d7e17245a77 (diff)
downloadrust-8d7765be82326742b18a3cbc707192a3e8065fc1.tar.gz
rust-8d7765be82326742b18a3cbc707192a3e8065fc1.zip
Resolve bounds in iface types
Closes #2311
Diffstat (limited to 'src/rustc')
-rw-r--r--src/rustc/middle/resolve.rs8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/rustc/middle/resolve.rs b/src/rustc/middle/resolve.rs
index c51df5bd391..884ced0a7f6 100644
--- a/src/rustc/middle/resolve.rs
+++ b/src/rustc/middle/resolve.rs
@@ -549,7 +549,7 @@ fn visit_item_with_scope(e: @env, i: @ast::item,
     let sc = @cons(scope_item(i), sc);
     alt i.node {
       ast::item_impl(tps, _, ifce, sty, methods) {
-        visit::visit_ty_params(tps, sc, v);
+        v.visit_ty_params(tps, sc, v);
         option::iter(ifce) {|p| visit::visit_path(p.path, sc, v)};
         v.visit_ty(sty, sc, v);
         for methods.each {|m|
@@ -560,15 +560,17 @@ fn visit_item_with_scope(e: @env, i: @ast::item,
         }
       }
       ast::item_iface(tps, _, methods) {
-        visit::visit_ty_params(tps, sc, v);
+        v.visit_ty_params(tps, sc, v);
+        let isc = @cons(scope_method(i.id, tps), sc);
         for methods.each {|m|
+            v.visit_ty_params(m.tps, isc, v);
             let msc = @cons(scope_method(i.id, tps + m.tps), sc);
             for m.decl.inputs.each {|a| v.visit_ty(a.ty, msc, v); }
             v.visit_ty(m.decl.output, msc, v);
         }
       }
       ast::item_class(tps, ifaces, members, ctor, m_dtor, _) {
-        visit::visit_ty_params(tps, sc, v);
+        v.visit_ty_params(tps, sc, v);
         // Can maybe skip this now that we require self on class fields
         let class_scope = @cons(scope_item(i), sc);
         /* visit the constructor... */