Index: src/ast.h |
diff --git a/src/ast.h b/src/ast.h |
index 23df48b8b1e09a00ee434be3da2f4d2340559d26..b4705f6ab853e2373bb66be3e4bee5b3044a7701 100644 |
--- a/src/ast.h |
+++ b/src/ast.h |
@@ -1711,6 +1711,12 @@ class Throw: public Expression { |
class FunctionLiteral: public Expression { |
public: |
+ enum Type { |
+ ANONYMOUS_EXPRESSION, |
+ NAMED_EXPRESSION, |
+ DECLARATION |
+ }; |
+ |
FunctionLiteral(Isolate* isolate, |
Handle<String> name, |
Scope* scope, |
@@ -1722,7 +1728,7 @@ class FunctionLiteral: public Expression { |
int num_parameters, |
int start_position, |
int end_position, |
- bool is_expression, |
+ Type type, |
bool has_duplicate_parameters) |
: Expression(isolate), |
name_(name), |
@@ -1738,7 +1744,8 @@ class FunctionLiteral: public Expression { |
end_position_(end_position), |
function_token_position_(RelocInfo::kNoPosition), |
inferred_name_(HEAP->empty_string()), |
- is_expression_(is_expression), |
+ is_expression_(type != DECLARATION), |
+ is_anonymous_(type == ANONYMOUS_EXPRESSION), |
pretenure_(false), |
has_duplicate_parameters_(has_duplicate_parameters) { |
} |
@@ -1753,6 +1760,7 @@ class FunctionLiteral: public Expression { |
int start_position() const { return start_position_; } |
int end_position() const { return end_position_; } |
bool is_expression() const { return is_expression_; } |
+ bool is_anonymous() const { return is_anonymous_; } |
bool strict_mode() const; |
int materialized_literal_count() { return materialized_literal_count_; } |
@@ -1797,6 +1805,7 @@ class FunctionLiteral: public Expression { |
int function_token_position_; |
Handle<String> inferred_name_; |
bool is_expression_; |
+ bool is_anonymous_; |
bool pretenure_; |
bool has_duplicate_parameters_; |
}; |