Procházet zdrojové kódy

Fix missing or wrong implementations in node.go (#429)

Levi před 2 roky
rodič
revize
b95230a9db
2 změnil soubory, kde provedl 22 přidání a 4 odebrání
  1. 21 3
      ast/node.go
  2. 1 1
      parser/expression.go

+ 21 - 3
ast/node.go

@@ -550,6 +550,7 @@ type (
 
 
 type (
 type (
 	ForLoopInitializer interface {
 	ForLoopInitializer interface {
+		Node
 		_forLoopInitializer()
 		_forLoopInitializer()
 	}
 	}
 
 
@@ -635,6 +636,7 @@ func (self *ArrayLiteral) Idx0() file.Idx          { return self.LeftBracket }
 func (self *ArrayPattern) Idx0() file.Idx          { return self.LeftBracket }
 func (self *ArrayPattern) Idx0() file.Idx          { return self.LeftBracket }
 func (self *AwaitExpression) Idx0() file.Idx       { return self.Await }
 func (self *AwaitExpression) Idx0() file.Idx       { return self.Await }
 func (self *ObjectPattern) Idx0() file.Idx         { return self.LeftBrace }
 func (self *ObjectPattern) Idx0() file.Idx         { return self.LeftBrace }
+func (self *ParameterList) Idx0() file.Idx         { return self.Opening }
 func (self *AssignExpression) Idx0() file.Idx      { return self.Left.Idx0() }
 func (self *AssignExpression) Idx0() file.Idx      { return self.Left.Idx0() }
 func (self *BadExpression) Idx0() file.Idx         { return self.From }
 func (self *BadExpression) Idx0() file.Idx         { return self.From }
 func (self *BinaryExpression) Idx0() file.Idx      { return self.Left.Idx0() }
 func (self *BinaryExpression) Idx0() file.Idx      { return self.Left.Idx0() }
@@ -655,6 +657,7 @@ func (self *ObjectLiteral) Idx0() file.Idx         { return self.LeftBrace }
 func (self *RegExpLiteral) Idx0() file.Idx         { return self.Idx }
 func (self *RegExpLiteral) Idx0() file.Idx         { return self.Idx }
 func (self *SequenceExpression) Idx0() file.Idx    { return self.Sequence[0].Idx0() }
 func (self *SequenceExpression) Idx0() file.Idx    { return self.Sequence[0].Idx0() }
 func (self *StringLiteral) Idx0() file.Idx         { return self.Idx }
 func (self *StringLiteral) Idx0() file.Idx         { return self.Idx }
+func (self *TemplateElement) Idx0() file.Idx       { return self.Idx }
 func (self *TemplateLiteral) Idx0() file.Idx       { return self.OpenQuote }
 func (self *TemplateLiteral) Idx0() file.Idx       { return self.OpenQuote }
 func (self *ThisExpression) Idx0() file.Idx        { return self.Idx }
 func (self *ThisExpression) Idx0() file.Idx        { return self.Idx }
 func (self *SuperExpression) Idx0() file.Idx       { return self.Idx }
 func (self *SuperExpression) Idx0() file.Idx       { return self.Idx }
@@ -688,14 +691,17 @@ func (self *FunctionDeclaration) Idx0() file.Idx { return self.Function.Idx0() }
 func (self *ClassDeclaration) Idx0() file.Idx    { return self.Class.Idx0() }
 func (self *ClassDeclaration) Idx0() file.Idx    { return self.Class.Idx0() }
 func (self *Binding) Idx0() file.Idx             { return self.Target.Idx0() }
 func (self *Binding) Idx0() file.Idx             { return self.Target.Idx0() }
 
 
+func (self *ForLoopInitializerExpression) Idx0() file.Idx  { return self.Expression.Idx0() }
 func (self *ForLoopInitializerVarDeclList) Idx0() file.Idx { return self.List[0].Idx0() }
 func (self *ForLoopInitializerVarDeclList) Idx0() file.Idx { return self.List[0].Idx0() }
+func (self *ForLoopInitializerLexicalDecl) Idx0() file.Idx { return self.LexicalDeclaration.Idx0() }
 func (self *PropertyShort) Idx0() file.Idx                 { return self.Name.Idx }
 func (self *PropertyShort) Idx0() file.Idx                 { return self.Name.Idx }
 func (self *PropertyKeyed) Idx0() file.Idx                 { return self.Key.Idx0() }
 func (self *PropertyKeyed) Idx0() file.Idx                 { return self.Key.Idx0() }
 func (self *ExpressionBody) Idx0() file.Idx                { return self.Expression.Idx0() }
 func (self *ExpressionBody) Idx0() file.Idx                { return self.Expression.Idx0() }
 
 
-func (self *FieldDefinition) Idx0() file.Idx  { return self.Idx }
-func (self *MethodDefinition) Idx0() file.Idx { return self.Idx }
-func (self *ClassStaticBlock) Idx0() file.Idx { return self.Static }
+func (self *VariableDeclaration) Idx0() file.Idx { return self.Var }
+func (self *FieldDefinition) Idx0() file.Idx     { return self.Idx }
+func (self *MethodDefinition) Idx0() file.Idx    { return self.Idx }
+func (self *ClassStaticBlock) Idx0() file.Idx    { return self.Static }
 
 
 func (self *ForDeclaration) Idx0() file.Idx    { return self.Idx }
 func (self *ForDeclaration) Idx0() file.Idx    { return self.Idx }
 func (self *ForIntoVar) Idx0() file.Idx        { return self.Binding.Idx0() }
 func (self *ForIntoVar) Idx0() file.Idx        { return self.Binding.Idx0() }
@@ -732,9 +738,11 @@ func (self *NullLiteral) Idx1() file.Idx        { return file.Idx(int(self.Idx)
 func (self *NumberLiteral) Idx1() file.Idx      { return file.Idx(int(self.Idx) + len(self.Literal)) }
 func (self *NumberLiteral) Idx1() file.Idx      { return file.Idx(int(self.Idx) + len(self.Literal)) }
 func (self *ObjectLiteral) Idx1() file.Idx      { return self.RightBrace + 1 }
 func (self *ObjectLiteral) Idx1() file.Idx      { return self.RightBrace + 1 }
 func (self *ObjectPattern) Idx1() file.Idx      { return self.RightBrace + 1 }
 func (self *ObjectPattern) Idx1() file.Idx      { return self.RightBrace + 1 }
+func (self *ParameterList) Idx1() file.Idx      { return self.Closing + 1 }
 func (self *RegExpLiteral) Idx1() file.Idx      { return file.Idx(int(self.Idx) + len(self.Literal)) }
 func (self *RegExpLiteral) Idx1() file.Idx      { return file.Idx(int(self.Idx) + len(self.Literal)) }
 func (self *SequenceExpression) Idx1() file.Idx { return self.Sequence[len(self.Sequence)-1].Idx1() }
 func (self *SequenceExpression) Idx1() file.Idx { return self.Sequence[len(self.Sequence)-1].Idx1() }
 func (self *StringLiteral) Idx1() file.Idx      { return file.Idx(int(self.Idx) + len(self.Literal)) }
 func (self *StringLiteral) Idx1() file.Idx      { return file.Idx(int(self.Idx) + len(self.Literal)) }
+func (self *TemplateElement) Idx1() file.Idx    { return file.Idx(int(self.Idx) + len(self.Literal)) }
 func (self *TemplateLiteral) Idx1() file.Idx    { return self.CloseQuote + 1 }
 func (self *TemplateLiteral) Idx1() file.Idx    { return self.CloseQuote + 1 }
 func (self *ThisExpression) Idx1() file.Idx     { return self.Idx + 4 }
 func (self *ThisExpression) Idx1() file.Idx     { return self.Idx + 4 }
 func (self *SuperExpression) Idx1() file.Idx    { return self.Idx + 5 }
 func (self *SuperExpression) Idx1() file.Idx    { return self.Idx + 5 }
@@ -793,7 +801,9 @@ func (self *Binding) Idx1() file.Idx {
 	return self.Target.Idx1()
 	return self.Target.Idx1()
 }
 }
 
 
+func (self *ForLoopInitializerExpression) Idx1() file.Idx  { return self.Expression.Idx1() }
 func (self *ForLoopInitializerVarDeclList) Idx1() file.Idx { return self.List[len(self.List)-1].Idx1() }
 func (self *ForLoopInitializerVarDeclList) Idx1() file.Idx { return self.List[len(self.List)-1].Idx1() }
+func (self *ForLoopInitializerLexicalDecl) Idx1() file.Idx { return self.LexicalDeclaration.Idx1() }
 
 
 func (self *PropertyShort) Idx1() file.Idx {
 func (self *PropertyShort) Idx1() file.Idx {
 	if self.Initializer != nil {
 	if self.Initializer != nil {
@@ -806,6 +816,14 @@ func (self *PropertyKeyed) Idx1() file.Idx { return self.Value.Idx1() }
 
 
 func (self *ExpressionBody) Idx1() file.Idx { return self.Expression.Idx1() }
 func (self *ExpressionBody) Idx1() file.Idx { return self.Expression.Idx1() }
 
 
+func (self *VariableDeclaration) Idx1() file.Idx {
+	if len(self.List) > 0 {
+		return self.List[len(self.List)-1].Idx1()
+	}
+
+	return self.Var + 3
+}
+
 func (self *FieldDefinition) Idx1() file.Idx {
 func (self *FieldDefinition) Idx1() file.Idx {
 	if self.Initializer != nil {
 	if self.Initializer != nil {
 		return self.Initializer.Idx1()
 		return self.Initializer.Idx1()

+ 1 - 1
parser/expression.go

@@ -1250,7 +1250,7 @@ func (self *_parser) parseAssignmentExpression() ast.Expression {
 		if id, ok := left.(*ast.Identifier); ok {
 		if id, ok := left.(*ast.Identifier); ok {
 			paramList = &ast.ParameterList{
 			paramList = &ast.ParameterList{
 				Opening: id.Idx,
 				Opening: id.Idx,
-				Closing: id.Idx1(),
+				Closing: id.Idx1() - 1,
 				List: []*ast.Binding{{
 				List: []*ast.Binding{{
 					Target: id,
 					Target: id,
 				}},
 				}},