fix(javascript): preserve alias and container uncertainty

This commit is contained in:
morluto committed 2026-10-09 22:46:08 +08:00
1 parent 99f257bbf0
commit 73e98b2516
8 files changed
+374 -43

No files matched your search

@@ -13,8 +13,8 @@ import {
collectSemanticReferences,
immutableSemanticBindings,
immutableSemanticScopes,
semanticStaticPropertyKey,
} from "./javascriptSemanticProjection.js";
import { semanticStaticPropertyKey } from "./javascriptAstValues.js";
import type {
JavaScriptSemanticAnalysisState,
JavaScriptSemanticBindingState,
@@ -35,7 +35,8 @@ import {
resolveSemanticModuleCallables,
} from "./javascriptSemanticReturns.js";
import { collectJavaScriptDerivedSemantics } from "./javascriptSemanticDerivedAnalysis.js";
import { propertyName, range } from "./javascriptStaticAnalysisHelpers.js";
import { range } from "./javascriptStaticAnalysisHelpers.js";
import { propertyName } from "./javascriptAstValues.js";
import { semanticCoverage } from "./javascriptSemanticCoverage.js";
import { semanticResourceLimitsIn } from "./javascriptSemanticResourceLimits.js";
import {
@@ -409,7 +410,16 @@ const bindInnerDeclaration = (
});
else if (t.isAssignmentExpression(node)) {
if (t.isIdentifier(node.left))
addAssignment(node.left, node.right, scope, state);
addAssignment(
node.left,
node.operator === "=" ||
node.operator === "||=" ||
node.operator === "??="
? node.right
: node,
scope,
state,
);
else
for (const identifier of assignedPatternIdentifiers(node.left))
addAssignment(identifier, node, scope, state);