mirror of
https://github.com/morluto/rea.git
synced 2026-11-11 01:13:39 +00:00
fix(javascript): retain private receiver and iterative disposal effects
This commit is contained in:
1 parent
0211b65a81
commit
787726817c
5 files changed
+169
-36
No files matched your search
@@ -1,9 +1,19 @@
|
||||
import * as t from "@babel/types";
|
||||
|
||||
/** Operands exposed to user-defined primitive conversion by language operations. */
|
||||
export const semanticCoercionOperands = (node: t.Node): readonly t.Node[] => {
|
||||
export const semanticCoercionOperands = (
|
||||
node: t.Node,
|
||||
isObject: (operand: t.Node) => boolean = () => false,
|
||||
): readonly t.Node[] => {
|
||||
if (t.isBinaryExpression(node)) {
|
||||
if (["===", "!==", "instanceof"].includes(node.operator)) return [];
|
||||
if (["===", "!=="].includes(node.operator)) return [];
|
||||
if (node.operator === "instanceof") return [node.left, node.right];
|
||||
if (
|
||||
["==", "!="].includes(node.operator) &&
|
||||
isObject(node.left) &&
|
||||
isObject(node.right)
|
||||
)
|
||||
return [];
|
||||
return node.operator === "in" ? [node.left] : [node.left, node.right];
|
||||
}
|
||||
if (t.isUnaryExpression(node) && ["+", "-", "~"].includes(node.operator))
|
||||
|
||||
Reference in new issue
Block a user