Browse Source

Add missing idx to ast.ForStatement / ast.ForInStatement

Vincent Vanackere 8 years ago
parent
commit
6672e9d1ee
1 changed files with 7 additions and 4 deletions
  1. 7 4
      parser/statement.go

+ 7 - 4
parser/statement.go

@@ -2,6 +2,7 @@ package parser
 
 
 import (
 import (
 	"github.com/dop251/goja/ast"
 	"github.com/dop251/goja/ast"
+	"github.com/dop251/goja/file"
 	"github.com/dop251/goja/token"
 	"github.com/dop251/goja/token"
 )
 )
 
 
@@ -356,7 +357,7 @@ func (self *_parser) parseIterationStatement() ast.Statement {
 	return self.parseStatement()
 	return self.parseStatement()
 }
 }
 
 
-func (self *_parser) parseForIn(into ast.Expression) *ast.ForInStatement {
+func (self *_parser) parseForIn(idx file.Idx, into ast.Expression) *ast.ForInStatement {
 
 
 	// Already have consumed "<into> in"
 	// Already have consumed "<into> in"
 
 
@@ -364,13 +365,14 @@ func (self *_parser) parseForIn(into ast.Expression) *ast.ForInStatement {
 	self.expect(token.RIGHT_PARENTHESIS)
 	self.expect(token.RIGHT_PARENTHESIS)
 
 
 	return &ast.ForInStatement{
 	return &ast.ForInStatement{
+		For:    idx,
 		Into:   into,
 		Into:   into,
 		Source: source,
 		Source: source,
 		Body:   self.parseIterationStatement(),
 		Body:   self.parseIterationStatement(),
 	}
 	}
 }
 }
 
 
-func (self *_parser) parseFor(initializer ast.Expression) *ast.ForStatement {
+func (self *_parser) parseFor(idx file.Idx, initializer ast.Expression) *ast.ForStatement {
 
 
 	// Already have consumed "<initializer> ;"
 	// Already have consumed "<initializer> ;"
 
 
@@ -387,6 +389,7 @@ func (self *_parser) parseFor(initializer ast.Expression) *ast.ForStatement {
 	self.expect(token.RIGHT_PARENTHESIS)
 	self.expect(token.RIGHT_PARENTHESIS)
 
 
 	return &ast.ForStatement{
 	return &ast.ForStatement{
+		For:         idx,
 		Initializer: initializer,
 		Initializer: initializer,
 		Test:        test,
 		Test:        test,
 		Update:      update,
 		Update:      update,
@@ -435,11 +438,11 @@ func (self *_parser) parseForOrForInStatement() ast.Statement {
 			self.nextStatement()
 			self.nextStatement()
 			return &ast.BadStatement{From: idx, To: self.idx}
 			return &ast.BadStatement{From: idx, To: self.idx}
 		}
 		}
-		return self.parseForIn(left[0])
+		return self.parseForIn(idx, left[0])
 	}
 	}
 
 
 	self.expect(token.SEMICOLON)
 	self.expect(token.SEMICOLON)
-	return self.parseFor(&ast.SequenceExpression{Sequence: left})
+	return self.parseFor(idx, &ast.SequenceExpression{Sequence: left})
 }
 }
 
 
 func (self *_parser) parseVariableStatement() *ast.VariableStatement {
 func (self *_parser) parseVariableStatement() *ast.VariableStatement {