diff options
| author | Eduard-Mihai Burtescu <edy.burt@gmail.com> | 2018-09-15 17:52:59 +0300 |
|---|---|---|
| committer | Eduard-Mihai Burtescu <edy.burt@gmail.com> | 2018-09-15 22:48:10 +0300 |
| commit | 653cd47c09454c150fd9a61ff654710bbd7ba5b8 (patch) | |
| tree | 318db6984b1d1206fdda2fb01d32ac1744056a69 | |
| parent | 38c82a2180eee975e88017d26fa86726b3594d7a (diff) | |
| download | rust-653cd47c09454c150fd9a61ff654710bbd7ba5b8.tar.gz rust-653cd47c09454c150fd9a61ff654710bbd7ba5b8.zip | |
rustc_resolve: use `continue` instead of `return` to "exit" a loop iteration.
6 files changed, 77 insertions, 3 deletions
diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs index c86d430face..dc4a76db692 100644 --- a/src/librustc_resolve/resolve_imports.rs +++ b/src/librustc_resolve/resolve_imports.rs @@ -746,7 +746,7 @@ impl<'a, 'b:'a, 'c: 'b> ImportResolver<'a, 'b, 'c> { // Currently imports can't resolve in non-module scopes, // we only have canaries in them for future-proofing. if external_crate.is_none() && results.module_scope.is_none() { - return; + continue; } { @@ -761,7 +761,7 @@ impl<'a, 'b:'a, 'c: 'b> ImportResolver<'a, 'b, 'c> { let possible_resultions = 1 + all_results.filter(|&def| def != first).count(); if possible_resultions <= 1 { - return; + continue; } } diff --git a/src/test/ui/run-pass/uniform-paths/basic.rs b/src/test/ui/run-pass/uniform-paths/basic.rs index fbdac98d258..7d997fe493a 100644 --- a/src/test/ui/run-pass/uniform-paths/basic.rs +++ b/src/test/ui/run-pass/uniform-paths/basic.rs @@ -37,7 +37,7 @@ fn main() { { // Test that having `std_io` in a module scope and a non-module // scope is allowed, when both resolve to the same definition. - use std::io as std_io; + use ::std::io as std_io; use std_io::stdout; stdout(); } diff --git a/src/test/ui/rust-2018/uniform-paths-forward-compat/issue-54253.rs b/src/test/ui/rust-2018/uniform-paths-forward-compat/issue-54253.rs new file mode 100644 index 00000000000..1f19a05d7a7 --- /dev/null +++ b/src/test/ui/rust-2018/uniform-paths-forward-compat/issue-54253.rs @@ -0,0 +1,27 @@ +// Copyright 2018 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. + +// edition:2018 + +// Dummy import to introduce `uniform_paths` canaries. +use std; + +// fn version() -> &'static str {""} + +mod foo { + // Error wasn't reported, despite `version` being commented out above. + use crate::version; //~ ERROR unresolved import `crate::version` + + fn bar() { + version(); + } +} + +fn main() {} diff --git a/src/test/ui/rust-2018/uniform-paths-forward-compat/issue-54253.stderr b/src/test/ui/rust-2018/uniform-paths-forward-compat/issue-54253.stderr new file mode 100644 index 00000000000..6dcc451c60a --- /dev/null +++ b/src/test/ui/rust-2018/uniform-paths-forward-compat/issue-54253.stderr @@ -0,0 +1,9 @@ +error[E0432]: unresolved import `crate::version` + --> $DIR/issue-54253.rs:20:9 + | +LL | use crate::version; //~ ERROR unresolved import `crate::version` + | ^^^^^^^^^^^^^^ no `version` in the root + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0432`. diff --git a/src/test/ui/rust-2018/uniform-paths/issue-54253.rs b/src/test/ui/rust-2018/uniform-paths/issue-54253.rs new file mode 100644 index 00000000000..7ca5c9e9eae --- /dev/null +++ b/src/test/ui/rust-2018/uniform-paths/issue-54253.rs @@ -0,0 +1,29 @@ +// Copyright 2018 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. + +// edition:2018 + +#![feature(uniform_paths)] + +// Dummy import to introduce `uniform_paths` canaries. +use std; + +// fn version() -> &'static str {""} + +mod foo { + // Error wasn't reported, despite `version` being commented out above. + use crate::version; //~ ERROR unresolved import `crate::version` + + fn bar() { + version(); + } +} + +fn main() {} diff --git a/src/test/ui/rust-2018/uniform-paths/issue-54253.stderr b/src/test/ui/rust-2018/uniform-paths/issue-54253.stderr new file mode 100644 index 00000000000..0016e21ef4d --- /dev/null +++ b/src/test/ui/rust-2018/uniform-paths/issue-54253.stderr @@ -0,0 +1,9 @@ +error[E0432]: unresolved import `crate::version` + --> $DIR/issue-54253.rs:22:9 + | +LL | use crate::version; //~ ERROR unresolved import `crate::version` + | ^^^^^^^^^^^^^^ no `version` in the root + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0432`. |
