Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ca98eaa82 |
No files matched your search
@@ -66,7 +66,6 @@
|
||||
* **javascript:** resolve exported callables through lexical bindings ([#1351](https://github.com/morluto/rea/issues/1351)) ([a9f5dad](https://github.com/morluto/rea/commit/a9f5dad5a8f196c88f6305d8d958b355cc0b52c2))
|
||||
* **javascript:** resolve query-only HTML references to their document ([55a46f7](https://github.com/morluto/rea/commit/55a46f7c7176075c9edda4fe61ed995f2ceadf6a))
|
||||
* **javascript:** retain array identity after length mutations ([4bcea1a](https://github.com/morluto/rea/commit/4bcea1aa76e3e7ca665197181739c5e27a62c40a))
|
||||
* **javascript:** retain conditional mutation ordering uncertainty ([b8a8190](https://github.com/morluto/rea/commit/b8a8190b2f30e377eee2d69d1ba31ea454fa70b9))
|
||||
* **javascript:** retain distinct module provenance path components ([2bd7de6](https://github.com/morluto/rea/commit/2bd7de6f8ca62fc1d48334cfa7fdced461b7b153))
|
||||
* **javascript:** retain unresolved value frontiers in provenance queries ([3e19875](https://github.com/morluto/rea/commit/3e19875c7fa9c61cff655bbe6046ddc4ab558533))
|
||||
* **javascript:** store source map URLs once ([ed8fcae](https://github.com/morluto/rea/commit/ed8fcae94b699b62b44162f880faa077a36c455d))
|
||||
|
||||
@@ -72,8 +72,6 @@ describe("reference lifetimes across calls and shallow copies", () => {
|
||||
"mutate(alias); alias={};",
|
||||
"if(flag) alias={}; mutate(alias);",
|
||||
"alias={}; if(flag) mutate(alias);",
|
||||
"alias={}; flag && mutate(alias);",
|
||||
"alias={}; flag ? mutate(alias) : noop();",
|
||||
"function invoke(){mutate(alias);} alias={}; invoke();",
|
||||
"alias={}; mutate(alias); alias=source;",
|
||||
])("retains uncertain call ordering: %s", (body) => {
|
||||
|
||||
@@ -94,25 +94,19 @@ const directMutationPosition = (
|
||||
!t.isTaggedTemplateExpression(node)
|
||||
)
|
||||
return null;
|
||||
let current: t.Node = node;
|
||||
while (true) {
|
||||
const parent = parents.get(current);
|
||||
if (
|
||||
parent === undefined ||
|
||||
t.isFunction(parent) ||
|
||||
(t.isLogicalExpression(parent) && parent.right === current) ||
|
||||
(t.isConditionalExpression(parent) && parent.test !== current)
|
||||
)
|
||||
return null;
|
||||
if (t.isStatement(parent)) return statementPosition(parent, parents);
|
||||
if (t.isVariableDeclarator(parent)) {
|
||||
const declaration = parents.get(parent);
|
||||
let current = parents.get(node);
|
||||
while (current !== undefined) {
|
||||
if (t.isFunction(current)) return null;
|
||||
if (t.isStatement(current)) return statementPosition(current, parents);
|
||||
if (t.isVariableDeclarator(current)) {
|
||||
const declaration = parents.get(current);
|
||||
return t.isVariableDeclaration(declaration)
|
||||
? statementPosition(declaration, parents, parent)
|
||||
? statementPosition(declaration, parents, current)
|
||||
: null;
|
||||
}
|
||||
current = parent;
|
||||
current = parents.get(current);
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
const referenceInitializerPosition = (
|
||||
|
||||
Reference in new issue
Block a user