Index: src/compiler/typer.cc |
diff --git a/src/compiler/typer.cc b/src/compiler/typer.cc |
index 58e6c37ab51a2e5229c8d3f4e669fab78dd3cefc..b33ee0c863d26da882553dd5e7ace770d658c249 100644 |
--- a/src/compiler/typer.cc |
+++ b/src/compiler/typer.cc |
@@ -187,6 +187,9 @@ Typer::Typer(Graph* graph, MaybeHandle<Context> context) |
Type::Union(Type::Union(singleton_false, zeroish, zone), |
undefined_or_null, zone), |
zone); |
+ truish = Type::Union( |
+ singleton_true, |
+ Type::Union(Type::DetectableReceiver(), Type::Symbol(), zone), zone); |
integer = Type::Range(minusinfinity, infinity, zone); |
weakint = Type::Union(integer, nan_or_minuszero, zone); |
@@ -513,8 +516,8 @@ Type* Typer::Visitor::ToPrimitive(Type* type, Typer* t) { |
Type* Typer::Visitor::ToBoolean(Type* type, Typer* t) { |
if (type->Is(Type::Boolean())) return type; |
if (type->Is(t->falsish)) return t->singleton_false; |
- if (type->Is(Type::DetectableReceiver())) return t->singleton_true; |
- if (type->Is(Type::OrderedNumber()) && (type->Max() < 0 || 0 < type->Min())) { |
+ if (type->Is(t->truish)) return t->singleton_true; |
+ if (type->Is(Type::PlainNumber()) && (type->Max() < 0 || 0 < type->Min())) { |
return t->singleton_true; // Ruled out nan, -0 and +0. |
} |
return Type::Boolean(); |