diff options
| author | Marijn Haverbeke <marijnh@gmail.com> | 2011-12-19 15:42:52 +0100 |
|---|---|---|
| committer | Marijn Haverbeke <marijnh@gmail.com> | 2011-12-19 15:43:02 +0100 |
| commit | e4e2d6d1a15ae350301bb94452f968ba99d2ec6e (patch) | |
| tree | 25907a1f991b3b3c0ff8e131020bb9af0563c41b /src/comp/middle/resolve.rs | |
| parent | 619d7c3f72a969c62789383af7d1a1446177adfc (diff) | |
Fix bug in type parameter handling for impl methods
The parameters of the impl weren't being combined in the right way with the parameters of the methods. The test worked only by accident. Issue #1227
Diffstat (limited to 'src/comp/middle/resolve.rs')
| -rw-r--r-- | src/comp/middle/resolve.rs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/comp/middle/resolve.rs b/src/comp/middle/resolve.rs index 90d560f1eb1..bdb723ebaf8 100644 --- a/src/comp/middle/resolve.rs +++ b/src/comp/middle/resolve.rs @@ -370,7 +370,17 @@ fn resolve_names(e: @env, c: @ast::crate) { // Visit helper functions fn visit_item_with_scope(i: @ast::item, sc: scopes, v: vt<scopes>) { - visit::visit_item(i, cons(scope_item(i), @sc), v); + let sc = cons(scope_item(i), @sc); + alt i.node { + ast::item_impl(tps, sty, methods) { + visit::visit_ty(sty, sc, v); + for m in methods { + v.visit_fn(m.node.meth, tps + m.node.tps, m.span, + some(m.node.ident), m.node.id, sc, v); + } + } + _ { visit::visit_item(i, sc, v); } + } } fn visit_native_item_with_scope(ni: @ast::native_item, sc: scopes, |
