Index: src/ast.h |
diff --git a/src/ast.h b/src/ast.h |
index b7331388fd9744954519b8ea8c91fdfa7667682b..594b78008cceb472d831dad32270b4f5e94fc99e 100644 |
--- a/src/ast.h |
+++ b/src/ast.h |
@@ -1964,27 +1964,34 @@ class Yield: public Expression { |
public: |
DECLARE_NODE_TYPE(Yield) |
+ enum Kind { |
+ INITIAL, // The initial yield that returns the unboxed generator object. |
+ SUSPEND, // A normal yield: { value: EXPRESSION, done: false } |
+ DELEGATING, // A yield*. |
+ FINAL // A return: { value: EXPRESSION, done: true } |
+ }; |
+ |
Expression* generator_object() const { return generator_object_; } |
Expression* expression() const { return expression_; } |
- bool is_delegating_yield() const { return is_delegating_yield_; } |
+ Kind yield_kind() const { return yield_kind_; } |
virtual int position() const { return pos_; } |
protected: |
Yield(Isolate* isolate, |
Expression* generator_object, |
Expression* expression, |
- bool is_delegating_yield, |
+ Kind yield_kind, |
int pos) |
: Expression(isolate), |
generator_object_(generator_object), |
expression_(expression), |
- is_delegating_yield_(is_delegating_yield), |
+ yield_kind_(yield_kind), |
pos_(pos) { } |
private: |
Expression* generator_object_; |
Expression* expression_; |
- bool is_delegating_yield_; |
+ Kind yield_kind_; |
int pos_; |
}; |
@@ -2966,10 +2973,10 @@ class AstNodeFactory BASE_EMBEDDED { |
Yield* NewYield(Expression *generator_object, |
Expression* expression, |
- bool is_delegating_yield, |
+ Yield::Kind yield_kind, |
int pos) { |
Yield* yield = new(zone_) Yield( |
- isolate_, generator_object, expression, is_delegating_yield, pos); |
+ isolate_, generator_object, expression, yield_kind, pos); |
VISIT_AND_RETURN(Yield, yield) |
} |