mirror of
https://github.com/morluto/rea
synced 2026-10-28 15:07:26 -04:00
fix(javascript): converge cyclic aliases with explicit projection widening
Replace initializer-history and full-path enumeration with a finite projection join at each source read. Retain conservative local returned-reference effects and disclose precision loss through static, semantic and captured-web results. Close full-binding callback cycles while preserving narrowed read semantics. Fixes #4348 Fixes #5138 Refs #4349 Refs #4364 Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Fuxuan-CN <3072252442@qq.com>
This commit is contained in:
@@ -86,7 +86,10 @@ import {
|
||||
ELECTRON_MODULE,
|
||||
} from "./javascriptElectronMemberWrites.js";
|
||||
import { range } from "./javascriptStaticAnalysisHelpers.js";
|
||||
import { semanticCoverage } from "./javascriptSemanticCoverage.js";
|
||||
import {
|
||||
semanticCoverage,
|
||||
RETURNED_REFERENCE_WIDENING_LIMITATION,
|
||||
} from "./javascriptSemanticCoverage.js";
|
||||
import { semanticResourceLimitReason } from "./javascriptSemanticResourceLimits.js";
|
||||
import {
|
||||
parseJavaScriptSource,
|
||||
@@ -414,8 +417,12 @@ export function* analyzeParsedJavaScriptSemanticsSteps(
|
||||
...state.getterResourceLimits,
|
||||
]),
|
||||
].sort(),
|
||||
[...state.returnedReferenceWidenings].map(range),
|
||||
),
|
||||
limitations: [
|
||||
...(state.returnedReferenceWidenings.size > 0
|
||||
? [RETURNED_REFERENCE_WIDENING_LIMITATION]
|
||||
: []),
|
||||
...[...state.getterResourceLimits]
|
||||
.sort()
|
||||
.map(semanticResourceLimitReason),
|
||||
@@ -956,6 +963,7 @@ const createState = (
|
||||
staticImportResolutionMode,
|
||||
valueResourceLimits: new Set(),
|
||||
getterResourceLimits: new Set(),
|
||||
returnedReferenceWidenings: new Set(),
|
||||
parentsByNode: new WeakMap(),
|
||||
scopes: [root],
|
||||
scopesById: new Map([[root.scopeId, root]]),
|
||||
|
||||
Reference in New Issue
Block a user