mirror of
https://github.com/morluto/rea.git
synced 2026-11-11 01:13:39 +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
@@ -5,6 +5,7 @@ import {
|
||||
semanticBindingCanBeRebound,
|
||||
semanticOpaqueBindingReadMayHaveChanged,
|
||||
} from "./javascriptSemanticOpaqueEffects.js";
|
||||
import type { JavaScriptOpenReceiverFact } from "./javascriptSemanticReceiverFacts.js";
|
||||
import * as t from "@babel/types";
|
||||
|
||||
import {
|
||||
@@ -204,7 +205,10 @@ function* indexSemanticAmbientWritesSteps(
|
||||
yield* indexJavaScriptAmbientWritesSteps(
|
||||
state.program,
|
||||
state,
|
||||
createSemanticOpaqueGlobalObserver(state),
|
||||
createSemanticOpaqueGlobalObserver(state, {
|
||||
createAmbientPathResolver,
|
||||
createSemanticModuleInterop,
|
||||
}),
|
||||
(node) => observePossibleCommonJsDelegateWrite(node, state),
|
||||
);
|
||||
if (state.opaqueEffects.globalSites.length > 0)
|
||||
@@ -506,15 +510,7 @@ export function* analyzeParsedJavaScriptSemanticsSteps(
|
||||
* Receiver identity facts for the overloaded `.open` syntax, plus
|
||||
* `configuration` for `.get` reads of a `getConfiguration(...)` result.
|
||||
*/
|
||||
export type JavaScriptOpenReceiverFact =
|
||||
| "window"
|
||||
| "indexed-db"
|
||||
| "cache-storage"
|
||||
| "local"
|
||||
| "local-indexed-db"
|
||||
| "local-cache-storage"
|
||||
| "configuration"
|
||||
| "extension-state";
|
||||
export type { JavaScriptOpenReceiverFact } from "./javascriptSemanticReceiverFacts.js";
|
||||
|
||||
/** Lexical receiver identities that select static endpoint interpretations. */
|
||||
export interface JavaScriptReceiverFacts {
|
||||
|
||||
Reference in new issue
Block a user