From d47834ee1b8fce7956272e27c9403021940fec8e Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 14 Jul 2020 18:31:48 +0200 Subject: Guard against infinite macro expansions closes #4463 --- crates/ra_hir_def/src/nameres/collector.rs | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'crates/ra_hir_def/src/nameres/collector.rs') diff --git a/crates/ra_hir_def/src/nameres/collector.rs b/crates/ra_hir_def/src/nameres/collector.rs index a35ac1024..e55cc1e55 100644 --- a/crates/ra_hir_def/src/nameres/collector.rs +++ b/crates/ra_hir_def/src/nameres/collector.rs @@ -717,6 +717,11 @@ impl DefCollector<'_> { macro_call_id: MacroCallId, depth: usize, ) { + if depth > 100 { + mark::hit!(macro_expansion_overflow); + log::warn!("macro expansion is too deep"); + return; + } let file_id: HirFileId = macro_call_id.as_file(); let item_tree = self.db.item_tree(file_id); let mod_dir = self.mod_dirs[&module_id].clone(); -- cgit v1.2.3