| Index: src/parser.cc
|
| diff --git a/src/parser.cc b/src/parser.cc
|
| index afe51b2882c5ad3d6202590638d51da90d84f07f..8ed20ee2121cfec8d313b042ac5ea878e66be628 100644
|
| --- a/src/parser.cc
|
| +++ b/src/parser.cc
|
| @@ -3201,7 +3201,6 @@ Statement* Parser::DesugarLexicalBindingsInForStatement(
|
|
|
| Block* inner_block = factory()->NewBlock(NULL, names->length() + 4, false,
|
| RelocInfo::kNoPosition);
|
| - int pos = scanner()->location().beg_pos;
|
| ZoneList<Variable*> inner_vars(names->length(), zone());
|
|
|
| // For each let variable x:
|
| @@ -3214,8 +3213,9 @@ Statement* Parser::DesugarLexicalBindingsInForStatement(
|
| Declare(declaration, true, CHECK_OK);
|
| inner_vars.Add(declaration->proxy()->var(), zone());
|
| VariableProxy* temp_proxy = factory()->NewVariableProxy(temps.at(i));
|
| - Assignment* assignment = factory()->NewAssignment(
|
| - is_const ? Token::INIT_CONST : Token::INIT_LET, proxy, temp_proxy, pos);
|
| + Assignment* assignment =
|
| + factory()->NewAssignment(is_const ? Token::INIT_CONST : Token::INIT_LET,
|
| + proxy, temp_proxy, RelocInfo::kNoPosition);
|
| Statement* assignment_statement =
|
| factory()->NewExpressionStatement(assignment, RelocInfo::kNoPosition);
|
| proxy->var()->set_initializer_position(init->position());
|
| @@ -3230,8 +3230,8 @@ Statement* Parser::DesugarLexicalBindingsInForStatement(
|
| {
|
| Expression* const1 = factory()->NewSmiLiteral(1, RelocInfo::kNoPosition);
|
| VariableProxy* first_proxy = factory()->NewVariableProxy(first);
|
| - compare =
|
| - factory()->NewCompareOperation(Token::EQ, first_proxy, const1, pos);
|
| + compare = factory()->NewCompareOperation(Token::EQ, first_proxy, const1,
|
| + RelocInfo::kNoPosition);
|
| }
|
| Statement* clear_first = NULL;
|
| // Make statement: first = 0.
|
| @@ -3243,8 +3243,8 @@ Statement* Parser::DesugarLexicalBindingsInForStatement(
|
| clear_first =
|
| factory()->NewExpressionStatement(assignment, RelocInfo::kNoPosition);
|
| }
|
| - Statement* clear_first_or_next = factory()->NewIfStatement(
|
| - compare, clear_first, next, RelocInfo::kNoPosition);
|
| + Statement* clear_first_or_next =
|
| + factory()->NewIfStatement(compare, clear_first, next, next->position());
|
| inner_block->AddStatement(clear_first_or_next, zone());
|
| }
|
|
|
| @@ -3265,8 +3265,8 @@ Statement* Parser::DesugarLexicalBindingsInForStatement(
|
| {
|
| Expression* const1 = factory()->NewSmiLiteral(1, RelocInfo::kNoPosition);
|
| VariableProxy* flag_proxy = factory()->NewVariableProxy(flag);
|
| - flag_cond =
|
| - factory()->NewCompareOperation(Token::EQ, flag_proxy, const1, pos);
|
| + flag_cond = factory()->NewCompareOperation(Token::EQ, flag_proxy, const1,
|
| + RelocInfo::kNoPosition);
|
| }
|
|
|
| // Create chain of expressions "flag = 0, temp_x = x, ..."
|
| @@ -3282,9 +3282,11 @@ Statement* Parser::DesugarLexicalBindingsInForStatement(
|
| }
|
|
|
| // Make the comma-separated list of temp_x = x assignments.
|
| + int inner_var_proxy_pos = scanner()->location().beg_pos;
|
| for (int i = 0; i < names->length(); i++) {
|
| VariableProxy* temp_proxy = factory()->NewVariableProxy(temps.at(i));
|
| - VariableProxy* proxy = factory()->NewVariableProxy(inner_vars.at(i), pos);
|
| + VariableProxy* proxy =
|
| + factory()->NewVariableProxy(inner_vars.at(i), inner_var_proxy_pos);
|
| Assignment* assignment = factory()->NewAssignment(
|
| Token::ASSIGN, temp_proxy, proxy, RelocInfo::kNoPosition);
|
| compound_next = factory()->NewBinaryOperation(
|
| @@ -3318,8 +3320,8 @@ Statement* Parser::DesugarLexicalBindingsInForStatement(
|
| {
|
| Expression* const1 = factory()->NewSmiLiteral(1, RelocInfo::kNoPosition);
|
| VariableProxy* flag_proxy = factory()->NewVariableProxy(flag);
|
| - compare =
|
| - factory()->NewCompareOperation(Token::EQ, flag_proxy, const1, pos);
|
| + compare = factory()->NewCompareOperation(Token::EQ, flag_proxy, const1,
|
| + RelocInfo::kNoPosition);
|
| }
|
| Statement* stop =
|
| factory()->NewBreakStatement(outer_loop, RelocInfo::kNoPosition);
|
|
|