From 232783c9148045e811034985ff7ccbb1520a7a24 Mon Sep 17 00:00:00 2001 From: Jeffrey Seyfried Date: Tue, 28 Jun 2016 23:03:56 +0000 Subject: [PATCH] Fix infinite loop on recursive module exports in an extern crate --- src/librustc_resolve/lib.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 8ffa95ec7e9..f983646479b 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -3194,7 +3194,9 @@ impl<'a> Resolver<'a> { 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)); + } } } })