diff options
| author | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-05-29 16:49:40 -0700 |
|---|---|---|
| committer | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-05-29 16:50:21 -0700 |
| commit | 8d7765be82326742b18a3cbc707192a3e8065fc1 (patch) | |
| tree | 456cf5b804e7196b47c50fda548b17391c53b7bb /src/rustc | |
| parent | f90228b8a82deb8da178d32322057d7e17245a77 (diff) | |
| download | rust-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.rs | 8 |
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... */ |
