| Index: lib/compiler/implementation/lib/js_helper.dart
|
| diff --git a/lib/compiler/implementation/lib/js_helper.dart b/lib/compiler/implementation/lib/js_helper.dart
|
| index 42846fb65ba37e0ab112b58a151a02227311373c..4f45b395ec5451d57e4aebb0d1dc37cba7e34c12 100644
|
| --- a/lib/compiler/implementation/lib/js_helper.dart
|
| +++ b/lib/compiler/implementation/lib/js_helper.dart
|
| @@ -171,11 +171,12 @@ tdiv(var a, var b) {
|
| }
|
|
|
| eq(var a, var b) {
|
| - if (JS('bool', @'# == null', a)) return JS('bool', @'# == null', b);
|
| - if (JS('bool', @'# == null', b)) return false;
|
| + if (JS('bool', @"# == null", a)) return JS('bool', @"# == null", b);
|
| if (JS('bool', @'typeof # === "object"', a)) {
|
| if (JS_HAS_EQUALS(a)) {
|
| return UNINTERCEPTED(a == b);
|
| + } else {
|
| + return JS('bool', @'# === #', a, b);
|
| }
|
| }
|
| // TODO(lrn): is NaN === NaN ? Is -0.0 === 0.0 ?
|
| @@ -183,11 +184,12 @@ eq(var a, var b) {
|
| }
|
|
|
| bool eqB(var a, var b) {
|
| - if (JS('bool', @'# == null', a)) return JS('bool', @'# == null', b);
|
| - if (JS('bool', @'# == null', b)) return false;
|
| + if (JS('bool', @"# == null", a)) return JS('bool', @"# == null", b);
|
| if (JS('bool', @'typeof # === "object"', a)) {
|
| if (JS_HAS_EQUALS(a)) {
|
| - return UNINTERCEPTED(a == b) == true;
|
| + return UNINTERCEPTED(a == b) === true;
|
| + } else {
|
| + return JS('bool', @'# === #', a, b);
|
| }
|
| }
|
| // TODO(lrn): is NaN === NaN ? Is -0.0 === 0.0 ?
|
| @@ -198,6 +200,26 @@ eqq(var a, var b) {
|
| return JS('bool', @'# === #', a, b);
|
| }
|
|
|
| +eqNull(var a) {
|
| + if (JS('bool', @'# == null', a)) return true;
|
| + if (JS('bool', @'typeof # === "object"', a)) {
|
| + if (JS_HAS_EQUALS(a)) {
|
| + return UNINTERCEPTED(a == null);
|
| + }
|
| + }
|
| + return false;
|
| +}
|
| +
|
| +eqNullB(var a) {
|
| + if (JS('bool', @'# == null', a)) return true;
|
| + if (JS('bool', @'typeof # === "object"', a)) {
|
| + if (JS_HAS_EQUALS(a)) {
|
| + return UNINTERCEPTED(a == null) === true;
|
| + }
|
| + }
|
| + return false;
|
| +}
|
| +
|
| gt$slow(var a, var b) {
|
| if (checkNumbers(a, b)) {
|
| return JS('bool', @'# > #', a, b);
|
|
|