Chromium Code Reviews| Index: src/compiler/typer.cc |
| diff --git a/src/compiler/typer.cc b/src/compiler/typer.cc |
| index c08e62cd3ac4e765b41aae0880c627dc1067ac4e..0802c3aebacf587f14bf33758316f5347b4bf933 100644 |
| --- a/src/compiler/typer.cc |
| +++ b/src/compiler/typer.cc |
| @@ -284,6 +284,7 @@ class Typer::Visitor : public Reducer { |
| #undef DECLARE_METHOD |
| static Type* ObjectIsCallable(Type*, Typer*); |
| + static Type* ObjectIsNonCallable(Type*, Typer*); |
| static Type* ObjectIsNumber(Type*, Typer*); |
| static Type* ObjectIsReceiver(Type*, Typer*); |
| static Type* ObjectIsSmi(Type*, Typer*); |
| @@ -502,8 +503,14 @@ Type* Typer::Visitor::ToString(Type* type, Typer* t) { |
| // Type checks. |
| Type* Typer::Visitor::ObjectIsCallable(Type* type, Typer* t) { |
| - if (type->Is(Type::Function())) return t->singleton_true_; |
| - if (type->Is(Type::Primitive())) return t->singleton_false_; |
| + if (type->Is(Type::Callable())) return t->singleton_true_; |
|
bakkot1
2017/01/23 19:26:16
Drive-by comment: document.all is "callable", in t
Benedikt Meurer
2017/02/14 10:18:24
Aye, sorry for the delay, just discovered this com
|
| + if (!type->Maybe(Type::Callable())) return t->singleton_false_; |
| + return Type::Boolean(); |
| +} |
| + |
| +Type* Typer::Visitor::ObjectIsNonCallable(Type* type, Typer* t) { |
| + if (type->Is(Type::NonCallable())) return t->singleton_true_; |
| + if (!type->Maybe(Type::NonCallable())) return t->singleton_false_; |
| return Type::Boolean(); |
| } |
| @@ -1828,6 +1835,10 @@ Type* Typer::Visitor::TypeObjectIsCallable(Node* node) { |
| return TypeUnaryOp(node, ObjectIsCallable); |
| } |
| +Type* Typer::Visitor::TypeObjectIsNonCallable(Node* node) { |
| + return TypeUnaryOp(node, ObjectIsNonCallable); |
| +} |
| + |
| Type* Typer::Visitor::TypeObjectIsNumber(Node* node) { |
| return TypeUnaryOp(node, ObjectIsNumber); |
| } |