diff options
| author | bors <bors@rust-lang.org> | 2016-01-29 11:21:58 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2016-01-29 11:21:58 +0000 |
| commit | f030d1fba198e00d981de9e1cefe596e263aa880 (patch) | |
| tree | 8b3cc1aef1af7992df8e681ca51b11a0fbd2919d /src | |
| parent | 33b73e9643fdf7b5d3be47d92e996ab04d6212e9 (diff) | |
| parent | f05bc16a5d8bb1bfb0ee2b281fb3dc6fdefa258c (diff) | |
| download | rust-f030d1fba198e00d981de9e1cefe596e263aa880.tar.gz rust-f030d1fba198e00d981de9e1cefe596e263aa880.zip | |
Auto merge of #31144 - jseyfried:remove_import_ordering_restriction, r=nrc
We no longer require `use` and `extern crate` items to precede other items in modules thanks to [RFC #385](https://github.com/rust-lang/rfcs/pull/385), but we still require `use` and `extern crate` items to precede statements in blocks (other items can appear anywhere in a block). I think that this is a needless distinction between imports and other items that contradicts the intent of the RFC.
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_resolve/lib.rs | 23 | ||||
| -rw-r--r-- | src/test/compile-fail/blind-item-block-middle.rs | 1 | ||||
| -rw-r--r-- | src/test/run-pass/blind-item-local-shadow.rs (renamed from src/test/compile-fail/blind-item-local-shadow.rs) | 1 |
3 files changed, 0 insertions, 25 deletions
diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 2536a12dfcb..25811687da8 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -2516,29 +2516,6 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> { self.value_ribs.push(Rib::new(NormalRibKind)); } - // 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/run-pass/blind-item-local-shadow.rs index 5cc087cb66e..bb654b1a20b 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); } |
