From f05bc16a5d8bb1bfb0ee2b281fb3dc6fdefa258c Mon Sep 17 00:00:00 2001 From: Jeffrey Seyfried Date: Sat, 23 Jan 2016 01:42:19 +0000 Subject: Resolve: stop requiring that use declarations precede statements in blocks --- src/librustc_resolve/lib.rs | 23 ----------------------- src/test/compile-fail/blind-item-block-middle.rs | 1 - src/test/compile-fail/blind-item-local-shadow.rs | 20 -------------------- src/test/run-pass/blind-item-local-shadow.rs | 19 +++++++++++++++++++ 4 files changed, 19 insertions(+), 44 deletions(-) delete mode 100644 src/test/compile-fail/blind-item-local-shadow.rs create mode 100644 src/test/run-pass/blind-item-local-shadow.rs (limited to 'src') diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 444c43163e3..1360f6584bd 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -2508,29 +2508,6 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> { } } - // Check for imports appearing after non-item statements. - let mut found_non_item = false; - for statement in &block.stmts { - if let hir::StmtDecl(ref declaration, _) = statement.node { - if let hir::DeclItem(i) = declaration.node { - let i = self.ast_map.expect_item(i.id); - match i.node { - ItemExternCrate(_) | ItemUse(_) if found_non_item => { - span_err!(self.session, - i.span, - E0154, - "imports are not allowed after non-item statements"); - } - _ => {} - } - } else { - found_non_item = true - } - } else { - found_non_item = true; - } - } - // Descend into the block. intravisit::walk_block(self, block); diff --git a/src/test/compile-fail/blind-item-block-middle.rs b/src/test/compile-fail/blind-item-block-middle.rs index fbb0730f014..24a1e4e24d8 100644 --- a/src/test/compile-fail/blind-item-block-middle.rs +++ b/src/test/compile-fail/blind-item-block-middle.rs @@ -14,5 +14,4 @@ fn main() { let bar = 5; //~^ ERROR declaration of `bar` shadows an enum variant or unit-like struct in scope use foo::bar; - //~^ ERROR imports are not allowed after non-item statements } diff --git a/src/test/compile-fail/blind-item-local-shadow.rs b/src/test/compile-fail/blind-item-local-shadow.rs deleted file mode 100644 index 5cc087cb66e..00000000000 --- a/src/test/compile-fail/blind-item-local-shadow.rs +++ /dev/null @@ -1,20 +0,0 @@ -// 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 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -mod bar { - pub fn foo() -> bool { true } -} - -fn main() { - let foo = || false; - use bar::foo; - //~^ ERROR imports are not allowed after non-item statements - assert_eq!(foo(), false); -} diff --git a/src/test/run-pass/blind-item-local-shadow.rs b/src/test/run-pass/blind-item-local-shadow.rs new file mode 100644 index 00000000000..bb654b1a20b --- /dev/null +++ b/src/test/run-pass/blind-item-local-shadow.rs @@ -0,0 +1,19 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +mod bar { + pub fn foo() -> bool { true } +} + +fn main() { + let foo = || false; + use bar::foo; + assert_eq!(foo(), false); +} -- cgit 1.4.1-3-g733a5