Skip to content

Commit 8e2598c

Browse files
authoredJun 29, 2016
Rollup merge of rust-lang#34542 - jseyfried:fix_recursive_modules, r=nrc
Fix non-termination on recursive module re-exports in extern crates Fixes rust-lang#33776. r? @nrc
2 parents cc15c21 + 9ffe1c9 commit 8e2598c

File tree

3 files changed

+31
-1
lines changed

3 files changed

+31
-1
lines changed
 

‎src/librustc_resolve/lib.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -3207,7 +3207,9 @@ impl<'a> Resolver<'a> {
32073207
if !in_module_is_extern || name_binding.vis == ty::Visibility::Public {
32083208
// add the module to the lookup
32093209
let is_extern = in_module_is_extern || name_binding.is_extern_crate();
3210-
worklist.push((module, path_segments, is_extern));
3210+
if !worklist.iter().any(|&(m, _, _)| m.def == module.def) {
3211+
worklist.push((module, path_segments, is_extern));
3212+
}
32113213
}
32123214
}
32133215
})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
pub mod foo {
12+
pub use foo;
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
// aux-build:recursive_reexports.rs
12+
13+
fn f() -> recursive_reexports::S {} //~ ERROR undeclared
14+
15+
fn main() {}

0 commit comments

Comments
 (0)