mirror of
https://github.com/morluto/rea.git
synced 2026-11-13 02:02:36 +00:00
refactor(javascript): break the semantic analysis import cycle (#8063)
* refactor(javascript): break the semantic analysis import cycle Split shared semantic facts out of the analysis hub so projectors of effects, evaluation, and identity no longer import one another in a cycle. * refactor(javascript): share the import specifier reader Read static imports in one module used by the boundary checker and both cycle guards, so those rules cannot drift apart. --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
This commit is contained in:
1 parent
940d71a45a
commit
249b90c5e3
33 files changed
+1043
-772
No files matched your search
@@ -14,13 +14,18 @@ import { javaScriptRuntimeContext } from "./javascriptSourceParser.js";
|
||||
import type { JavaScriptModuleOrigin } from "./javascriptSemanticIr.js";
|
||||
import {
|
||||
resolveSemanticBindingState,
|
||||
isUnmodifiedCommonJsWrapperBinding,
|
||||
commonJsWrapperBindingDeclaration,
|
||||
semanticResolutionBlocked,
|
||||
semanticStableInitializer,
|
||||
semanticBindingHasPriorValueWrite,
|
||||
type JavaScriptSemanticAnalysisState,
|
||||
} from "./javascriptSemanticState.js";
|
||||
import {
|
||||
commonJsWrapperBindingDeclaration,
|
||||
isUnmodifiedCommonJsWrapperBinding,
|
||||
semanticBindingAtRead,
|
||||
semanticBindingHasPriorValueWrite,
|
||||
semanticEffectTiming,
|
||||
semanticTopLevelEffectFollowsCapture,
|
||||
} from "./javascriptSemanticMutationInitializers.js";
|
||||
import {
|
||||
semanticStaticPropertyKey,
|
||||
semanticMemberChain,
|
||||
@@ -31,11 +36,6 @@ import {
|
||||
staticSourceRelativeUrlPath,
|
||||
stringValue,
|
||||
} from "./javascriptStaticAnalysisHelpers.js";
|
||||
import {
|
||||
semanticEffectTiming,
|
||||
semanticBindingAtRead,
|
||||
semanticTopLevelEffectFollowsCapture,
|
||||
} from "./javascriptSemanticMutationInitializers.js";
|
||||
import { createSemanticModuleInterop } from "./javascriptModuleInterop.js";
|
||||
import { createSemanticReturnedReferences } from "./javascriptSemanticReturnedReferences.js";
|
||||
import { semanticIterationSources } from "./javascriptSemanticIterationSources.js";
|
||||
@@ -53,22 +53,20 @@ import {
|
||||
type SemanticAliasSelectionPath,
|
||||
} from "./javascriptSemanticAliasSelections.js";
|
||||
import { SEMANTIC_ALIAS_SELECTION_LIMIT } from "./javascriptSemanticResourceLimits.js";
|
||||
import {
|
||||
semanticRequireOriginReaders,
|
||||
type JavaScriptRequireLoaderFact,
|
||||
type JavaScriptRequireOrigin,
|
||||
} from "./javascriptSemanticRequireOriginSlot.js";
|
||||
import {
|
||||
isUnmodifiedGlobalReference,
|
||||
isUnmodifiedImportMetaUrl,
|
||||
} from "./javascriptSemanticAmbientWrites.js";
|
||||
|
||||
export interface JavaScriptRequireOrigin {
|
||||
readonly origin: JavaScriptModuleOrigin;
|
||||
readonly call: t.CallExpression;
|
||||
}
|
||||
|
||||
export type JavaScriptRequireLoaderFact =
|
||||
| "commonjs-loader"
|
||||
| "factory-loader"
|
||||
| "create-require"
|
||||
| "local"
|
||||
| "unknown";
|
||||
export type {
|
||||
JavaScriptRequireLoaderFact,
|
||||
JavaScriptRequireOrigin,
|
||||
} from "./javascriptSemanticRequireOriginSlot.js";
|
||||
|
||||
const possibleCommonJsDelegateWriteStates =
|
||||
new WeakSet<JavaScriptSemanticAnalysisState>();
|
||||
@@ -1661,3 +1659,6 @@ export const semanticMutableBuiltinOrigin = <Key = never>(
|
||||
? { specifier, path }
|
||||
: undefined;
|
||||
};
|
||||
|
||||
semanticRequireOriginReaders.origin = semanticRequireOrigin;
|
||||
semanticRequireOriginReaders.loader = semanticRequireLoaderAt;
|
||||
Reference in new issue
Block a user