Skip to content

Commit a788536

Browse files
committed
Fix equality bug
1 parent 4348552 commit a788536

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/js/base/runtime.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -2440,13 +2440,16 @@ function (Namespace, jsnums, codePoint, util, exnStackParser, loader, seedrandom
24402440

24412441
// JS function from Pyret values to Pyret equality answers
24422442
function identical3(v1, v2) {
2443+
var v1IsRough = jsnums.isRoughnum(v1)
2444+
var v2IsRough = jsnums.isRoughnum(v2)
2445+
24432446
if (isFunction(v1) && isFunction(v2)) {
24442447
return thisRuntime.ffi.unknown.app("Functions", v1, v2);
24452448
} else if (isMethod(v1) && isMethod(v2)) {
24462449
return thisRuntime.ffi.unknown.app('Methods', v1, v2);
2447-
} else if (jsnums.isRoughnum(v1) && jsnums.isRoughnum(v2)) {
2450+
} else if (v1IsRough && v2IsRough) {
24482451
return thisRuntime.ffi.unknown.app('Roughnums', v1, v2);
2449-
} else if (v1 === v2 || (jsnums.isPyretNumber(v1) && jsnums.isPyretNumber(v2) && jsnums.equals(v1, v2))) {
2452+
} else if (v1 === v2 || (!(v1IsRough || v2IsRough) && jsnums.isPyretNumber(v1) && jsnums.isPyretNumber(v2) && jsnums.equals(v1, v2, NumberErrbacks))) {
24502453
return thisRuntime.ffi.equal;
24512454
} else {
24522455
return thisRuntime.ffi.notEqual.app("", v1, v2);

0 commit comments

Comments
 (0)