]> git.lizzy.rs Git - rust.git/commitdiff
Fix infinite loop on recursive module exports in an extern crate
authorJeffrey Seyfried <jeffrey.seyfried@gmail.com>
Tue, 28 Jun 2016 23:03:56 +0000 (23:03 +0000)
committerJeffrey Seyfried <jeffrey.seyfried@gmail.com>
Tue, 28 Jun 2016 23:03:56 +0000 (23:03 +0000)
src/librustc_resolve/lib.rs

index 8ffa95ec7e96f2c860aa98833c7c9811b01bc8cc..f983646479b9401ee1740652e7b7f77be3e5502b 100644 (file)
@@ -3194,7 +3194,9 @@ fn lookup_candidates<FilterFn>(&mut self,
                     if !in_module_is_extern || name_binding.vis == ty::Visibility::Public {
                         // add the module to the lookup
                         let is_extern = in_module_is_extern || name_binding.is_extern_crate();
-                        worklist.push((module, path_segments, is_extern));
+                        if !worklist.iter().any(|&(m, _, _)| m.def == module.def) {
+                            worklist.push((module, path_segments, is_extern));
+                        }
                     }
                 }
             })