diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_typeck/check/upvar.rs | 32 | ||||
| -rw-r--r-- | src/test/run-pass/issue-27268.rs | 13 |
2 files changed, 20 insertions, 25 deletions
diff --git a/src/librustc_typeck/check/upvar.rs b/src/librustc_typeck/check/upvar.rs index 0e3fa654efa..f9b7a330816 100644 --- a/src/librustc_typeck/check/upvar.rs +++ b/src/librustc_typeck/check/upvar.rs @@ -93,22 +93,8 @@ impl<'a, 'tcx, 'v> Visitor<'v> for SeedBorrowKind<'a, 'tcx> { visit::walk_expr(self, expr); } - fn visit_fn(&mut self, - fn_kind: visit::FnKind<'v>, - decl: &'v ast::FnDecl, - block: &'v ast::Block, - span: Span, - _id: ast::NodeId) - { - match fn_kind { - visit::FkItemFn(..) | visit::FkMethod(..) => { - // ignore nested fn items - } - visit::FkFnBlock => { - visit::walk_fn(self, fn_kind, decl, block, span); - } - } - } + // Skip all items; they aren't in the same context. + fn visit_item(&mut self, _: &'v ast::Item) { } } impl<'a,'tcx> SeedBorrowKind<'a,'tcx> { @@ -515,16 +501,12 @@ impl<'a, 'tcx, 'v> Visitor<'v> for AdjustBorrowKind<'a, 'tcx> { span: Span, id: ast::NodeId) { - match fn_kind { - visit::FkItemFn(..) | visit::FkMethod(..) => { - // ignore nested fn items - } - visit::FkFnBlock => { - visit::walk_fn(self, fn_kind, decl, body, span); - self.analyze_closure(id, span, decl, body); - } - } + visit::walk_fn(self, fn_kind, decl, body, span); + self.analyze_closure(id, span, decl, body); } + + // Skip all items; they aren't in the same context. + fn visit_item(&mut self, _: &'v ast::Item) { } } impl<'a,'tcx> euv::Delegate<'tcx> for AdjustBorrowKind<'a,'tcx> { diff --git a/src/test/run-pass/issue-27268.rs b/src/test/run-pass/issue-27268.rs new file mode 100644 index 00000000000..8af850bbada --- /dev/null +++ b/src/test/run-pass/issue-27268.rs @@ -0,0 +1,13 @@ +// Copyright 2015 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +fn main() { + const _C: &'static Fn() = &||{}; +} |
