Skip to content

Commit 098c9b6

Browse files
committed
Fix non-termination in resolve.
1 parent c217ab6 commit 098c9b6

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

src/librustc_resolve/lib.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -2943,6 +2943,7 @@ impl<'a> Resolver<'a> {
29432943

29442944
let mut lookup_results = Vec::new();
29452945
let mut worklist = Vec::new();
2946+
let mut seen_modules = FxHashSet();
29462947
worklist.push((self.graph_root, Vec::new(), false));
29472948

29482949
while let Some((in_module,
@@ -2989,7 +2990,7 @@ impl<'a> Resolver<'a> {
29892990
if !in_module_is_extern || name_binding.vis == ty::Visibility::Public {
29902991
// add the module to the lookup
29912992
let is_extern = in_module_is_extern || name_binding.is_extern_crate();
2992-
if !worklist.iter().any(|&(m, ..)| m.def() == module.def()) {
2993+
if seen_modules.insert(module.def_id().unwrap()) {
29932994
worklist.push((module, path_segments, is_extern));
29942995
}
29952996
}

src/test/compile-fail/recursive-reexports.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
// aux-build:recursive_reexports.rs
1212

13-
fn f() -> recursive_reexports::S {} //~ ERROR undeclared
13+
extern crate recursive_reexports;
14+
15+
fn f() -> recursive_reexports::S {} //~ ERROR type name `recursive_reexports::S` is undefined
1416

1517
fn main() {}

0 commit comments

Comments
 (0)