From a08e46ed3d1a89172b9c0dcfa108e11f17dba48f Mon Sep 17 00:00:00 2001 From: bompus Date: Tue, 27 Oct 2026 19:52:15 -0600 Subject: [PATCH] resolve: apply_language_gate filters in place MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit retain keeps the input Vec's allocation instead of building a second via into_iter+collect — one Vec alloc per ref, same gate verdicts. --- codegraph-kernel/src/resolve/names.rs | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/codegraph-kernel/src/resolve/names.rs b/codegraph-kernel/src/resolve/names.rs index 46e0c77b6..d8652be24 100644 --- a/codegraph-kernel/src/resolve/names.rs +++ b/codegraph-kernel/src/resolve/names.rs @@ -62,26 +62,21 @@ impl KernelResolver { } /// applyLanguageGate (name-matcher.ts). - pub(super) fn apply_language_gate(&mut self, candidates: Vec>, r: &ResolveRefIn) -> Vec> { + pub(super) fn apply_language_gate(&mut self, mut candidates: Vec>, r: &ResolveRefIn) -> Vec> { + // retain in place — one Vec alloc per ref instead of two. if r.reference_kind == "references" || r.reference_kind == "function_ref" { - return candidates - .into_iter() - .filter(|c| same_language_family(&c.language, &r.language) || self.objc_header_global_ref(c, r)) - .collect(); + candidates.retain(|c| same_language_family(&c.language, &r.language) || self.objc_header_global_ref(c, r)); + return candidates; } if r.reference_kind == "imports" { - return candidates - .into_iter() - .filter(|c| { - !crosses_known_family(&c.language, &r.language) - && !crosses_code_boundary(&c.language, &r.language) - }) - .collect(); + candidates.retain(|c| { + !crosses_known_family(&c.language, &r.language) + && !crosses_code_boundary(&c.language, &r.language) + }); + return candidates; } + candidates.retain(|c| !crosses_code_boundary(&c.language, &r.language) || self.has_bridge_evidence(c, r)); candidates - .into_iter() - .filter(|c| !crosses_code_boundary(&c.language, &r.language) || self.has_bridge_evidence(c, r)) - .collect() } /// hasBridgeEvidence (name-matcher.ts): a call may cross a language