Skip to content

Commit 5d6d1da

Browse files
committed
Unify
1 parent 5b52243 commit 5d6d1da

1 file changed

Lines changed: 8 additions & 6 deletions

File tree

usvm-ts/src/main/kotlin/org/usvm/machine/operator/TsBinaryOperator.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -447,15 +447,17 @@ sealed interface TsBinaryOperator {
447447

448448
// ref == ref
449449
if (lhs.sort == addressSort && rhs.sort == addressSort) {
450-
// Note:
451-
// undefined == null
452-
// null == undefined
450+
// Note: in JavaScript, `null == undefined`
453451
val lhs = lhs.asExpr(addressSort)
454452
val rhs = rhs.asExpr(addressSort)
453+
val lhsIsNull = mkEq(lhs, mkTsNullValue())
454+
val rhsIsNull = mkEq(rhs, mkTsNullValue())
455+
val lhsIsUndefined = mkEq(lhs, mkUndefinedValue())
456+
val rhsIsUndefined = mkEq(rhs, mkUndefinedValue())
455457
return mkOr(
456-
mkEq(lhs, rhs),
457-
mkEq(lhs, mkUndefinedValue()) and mkEq(rhs, mkTsNullValue()),
458-
mkEq(lhs, mkTsNullValue()) and mkEq(rhs, mkUndefinedValue()),
458+
mkAnd(lhsIsUndefined, rhsIsNull),
459+
mkAnd(lhsIsNull, rhsIsUndefined),
460+
mkHeapRefEq(lhs, rhs)
459461
)
460462
}
461463

0 commit comments

Comments
 (0)