diff --git a/crates/hir_ty/src/diagnostics/decl_check.rs b/crates/hir_ty/src/diagnostics/decl_check.rs index bfe239793c6..33a0f4d7d48 100644 --- a/crates/hir_ty/src/diagnostics/decl_check.rs +++ b/crates/hir_ty/src/diagnostics/decl_check.rs @@ -102,7 +102,7 @@ impl<'a, 'b> DeclValidator<'a, 'b> { let db = self.db; for block_def_map in body.block_scopes.iter().filter_map(|block| db.block_def_map(*block)) { for (_, module) in block_def_map.modules() { - for (def_id, _) in module.scope.values() { + for def_id in module.scope.declarations() { let mut validator = DeclValidator::new(self.db, self.krate, self.sink); validator.validate_item(def_id); } @@ -902,4 +902,17 @@ extern { "#, ); } + + #[test] + fn infinite_loop_inner_items() { + check_diagnostics( + r#" +fn qualify() { + mod foo { + use super::*; + } +} + "#, + ) + } }