| Index: src/ast/ast.h
 | 
| diff --git a/src/ast/ast.h b/src/ast/ast.h
 | 
| index 93189d5f622043326f5f9f425dd83a2fc6840a4d..808e669253067a497ebc3ffdbf391d712b99c126 100644
 | 
| --- a/src/ast/ast.h
 | 
| +++ b/src/ast/ast.h
 | 
| @@ -182,6 +182,11 @@ class AstProperties final BASE_EMBEDDED {
 | 
|  
 | 
|  DEFINE_OPERATORS_FOR_FLAGS(AstProperties::Flags)
 | 
|  
 | 
| +struct SourceRange {
 | 
| +  SourceRange() : start(kNoSourcePosition), end(kNoSourcePosition) {}
 | 
| +  bool IsEmpty() const { return start == kNoSourcePosition; }
 | 
| +  int32_t start, end;
 | 
| +};
 | 
|  
 | 
|  class AstNode: public ZoneObject {
 | 
|   public:
 | 
| @@ -1001,6 +1006,9 @@ class IfStatement final : public Statement {
 | 
|    Statement* then_statement() const { return then_statement_; }
 | 
|    Statement* else_statement() const { return else_statement_; }
 | 
|  
 | 
| +  SourceRange then_range() const { return then_range_; }
 | 
| +  SourceRange else_range() const { return else_range_; }
 | 
| +
 | 
|    void set_condition(Expression* e) { condition_ = e; }
 | 
|    void set_then_statement(Statement* s) { then_statement_ = s; }
 | 
|    void set_else_statement(Statement* s) { else_statement_ = s; }
 | 
| @@ -1020,12 +1028,15 @@ class IfStatement final : public Statement {
 | 
|    friend class AstNodeFactory;
 | 
|  
 | 
|    IfStatement(Expression* condition, Statement* then_statement,
 | 
| -              Statement* else_statement, int pos)
 | 
| +              Statement* else_statement, int pos, SourceRange then_range,
 | 
| +              SourceRange else_range)
 | 
|        : Statement(pos, kIfStatement),
 | 
|          base_id_(BailoutId::None().ToInt()),
 | 
|          condition_(condition),
 | 
|          then_statement_(then_statement),
 | 
| -        else_statement_(else_statement) {}
 | 
| +        else_statement_(else_statement),
 | 
| +        then_range_(then_range),
 | 
| +        else_range_(else_range) {}
 | 
|  
 | 
|    static int parent_num_ids() { return 0; }
 | 
|    int base_id() const {
 | 
| @@ -1038,6 +1049,8 @@ class IfStatement final : public Statement {
 | 
|    Expression* condition_;
 | 
|    Statement* then_statement_;
 | 
|    Statement* else_statement_;
 | 
| +  SourceRange then_range_;
 | 
| +  SourceRange else_range_;
 | 
|  };
 | 
|  
 | 
|  
 | 
| @@ -3316,12 +3329,12 @@ class AstNodeFactory final BASE_EMBEDDED {
 | 
|      return new (zone_) WithStatement(scope, expression, statement, pos);
 | 
|    }
 | 
|  
 | 
| -  IfStatement* NewIfStatement(Expression* condition,
 | 
| -                              Statement* then_statement,
 | 
| -                              Statement* else_statement,
 | 
| -                              int pos) {
 | 
| -    return new (zone_)
 | 
| -        IfStatement(condition, then_statement, else_statement, pos);
 | 
| +  IfStatement* NewIfStatement(Expression* condition, Statement* then_statement,
 | 
| +                              Statement* else_statement, int pos,
 | 
| +                              SourceRange then_range = {},
 | 
| +                              SourceRange else_range = {}) {
 | 
| +    return new (zone_) IfStatement(condition, then_statement, else_statement,
 | 
| +                                   pos, then_range, else_range);
 | 
|    }
 | 
|  
 | 
|    TryCatchStatement* NewTryCatchStatement(Block* try_block, Scope* scope,
 | 
| 
 |