From f05bc16a5d8bb1bfb0ee2b281fb3dc6fdefa258c Mon Sep 17 00:00:00 2001 From: Jeffrey Seyfried Date: Sat, 23 Jan 2016 01:42:19 +0000 Subject: [PATCH] Resolve: stop requiring that use declarations precede statements in blocks --- src/librustc_resolve/lib.rs | 23 ------------------- .../compile-fail/blind-item-block-middle.rs | 1 - .../blind-item-local-shadow.rs | 1 - 3 files changed, 25 deletions(-) rename src/test/{compile-fail => run-pass}/blind-item-local-shadow.rs (90%) diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 444c43163e3c3..1360f6584bda5 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 fbb0730f01461..24a1e4e24d81a 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/run-pass/blind-item-local-shadow.rs similarity index 90% rename from src/test/compile-fail/blind-item-local-shadow.rs rename to src/test/run-pass/blind-item-local-shadow.rs index 5cc087cb66e3c..bb654b1a20b91 100644 --- a/src/test/compile-fail/blind-item-local-shadow.rs +++ b/src/test/run-pass/blind-item-local-shadow.rs @@ -15,6 +15,5 @@ mod bar { fn main() { let foo = || false; use bar::foo; - //~^ ERROR imports are not allowed after non-item statements assert_eq!(foo(), false); }