diff --git a/src/domain/javascript/javascriptSemanticAnalysis.ts b/src/domain/javascript/javascriptSemanticAnalysis.ts index 9fbbd0f717..9503ab3a9e 100644 --- a/src/domain/javascript/javascriptSemanticAnalysis.ts +++ b/src/domain/javascript/javascriptSemanticAnalysis.ts @@ -143,7 +143,7 @@ export function* analyzeParsedJavaScriptSemanticsSteps( const parserPartial = file.errors.length > 0; const bindings = immutableSemanticBindings(state); yield; - const callables = collectSemanticReturns(file.program, state, parserPartial); + const callables = collectSemanticReturns(state, parserPartial); yield; const moduleLinks = resolveSemanticModuleCallables(state, callables); const derived = yield* collectJavaScriptDerivedSemanticsSteps( diff --git a/src/domain/javascript/javascriptSemanticReturns.ts b/src/domain/javascript/javascriptSemanticReturns.ts index 80aeb1eb36..b6ce1540bc 100644 --- a/src/domain/javascript/javascriptSemanticReturns.ts +++ b/src/domain/javascript/javascriptSemanticReturns.ts @@ -26,7 +26,6 @@ import { import { evaluateSemanticExpression } from "./javascriptSemanticValues.js"; import { range } from "./javascriptStaticAnalysisHelpers.js"; import { semanticReturnCoverage } from "./javascriptSemanticCoverage.js"; -import { traverseJavaScriptAst } from "./javascriptSemanticTraversal.js"; import { semanticCallableResultExpressions } from "./javascriptSemanticCallableResults.js"; interface ReturnExpression { @@ -36,13 +35,11 @@ interface ReturnExpression { /** Evaluate direct returns while excluding every nested callable. */ export const collectSemanticReturns = ( - program: t.Program, state: JavaScriptSemanticAnalysisState, parserPartial: boolean, ): JavaScriptSemanticCallable[] => { - const nodes = callableNodes(program); return state.callables.map((callable) => { - const node = nodes.get(callable.callableId); + const node = state.callableNodesById.get(callable.callableId); if (node === undefined) return { ...callable, @@ -117,17 +114,6 @@ export const resolveSemanticModuleCallables = ( }); }; -const callableNodes = (program: t.Program): Map => { - const output = new Map(); - traverseJavaScriptAst(program, { - enter: (node) => { - const id = semanticCallableIdForNode(node); - if (id !== null) output.set(id, node); - }, - }); - return output; -}; - const directReturnExpressions = (callable: t.Node): ReturnExpression[] => semanticCallableResultExpressions(callable) .filter(({ kind }) => kind === "return")