From 9380624970de0848b3eae9606f203d48b889d44d Mon Sep 17 00:00:00 2001 From: never Date: Mon, 13 Nov 2023 11:13:33 +0800 Subject: [PATCH] perf: avoid return drop ProgramScope in recursion Signed-off-by: never --- kclvm/sema/src/resolver/mod.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/kclvm/sema/src/resolver/mod.rs b/kclvm/sema/src/resolver/mod.rs index 40804ddf8..23ccb902a 100644 --- a/kclvm/sema/src/resolver/mod.rs +++ b/kclvm/sema/src/resolver/mod.rs @@ -71,7 +71,7 @@ impl<'ctx> Resolver<'ctx> { } /// The check main function. - pub(crate) fn check(&mut self, pkgpath: &str) -> ProgramScope { + pub(crate) fn check(&mut self, pkgpath: &str) { self.check_import(pkgpath); self.init_global_types(); match self.program.pkgs.get(pkgpath) { @@ -91,16 +91,16 @@ impl<'ctx> Resolver<'ctx> { } None => {} } - ProgramScope { + } + + pub(crate) fn check_and_lint(&mut self, pkgpath: &str) -> ProgramScope { + self.check(pkgpath); + let mut scope = ProgramScope { scope_map: self.scope_map.clone(), import_names: self.ctx.import_names.clone(), node_ty_map: self.node_ty_map.clone(), handler: self.handler.clone(), - } - } - - pub(crate) fn check_and_lint(&mut self, pkgpath: &str) -> ProgramScope { - let mut scope = self.check(pkgpath); + }; self.lint_check_scope_map(); for diag in &self.linter.handler.diagnostics { scope.handler.diagnostics.insert(diag.clone());