Pārlūkot izejas kodu

Support nested AssignmentElements in Array AssignmentPatterns. Fixes #614.

Dmitry Panov 1 gadu atpakaļ
vecāks
revīzija
241b342198
2 mainītis faili ar 21 papildinājumiem un 1 dzēšanām
  1. 20 0
      compiler_test.go
  2. 1 1
      parser/expression.go

+ 20 - 0
compiler_test.go

@@ -5866,6 +5866,26 @@ func TestFunctionBodyClassDecl(t *testing.T) {
 	}
 	}
 }
 }
 
 
+func TestNestedDestructArray(t *testing.T) {
+	const SCRIPT = `
+	var [
+		[ h = 0 ] = [ 0 ]
+	] = [];
+	assert.sameValue(h, 0);
+
+	var [
+		[ h1 = 1 ] = []
+	] = [];
+	assert.sameValue(h1, 1);
+
+	var [
+		[ h2 = 1 ] = []
+	] = [ [ 2 ] ];
+	assert.sameValue(h2, 2);
+	`
+	testScriptWithTestLib(SCRIPT, _undefined, t)
+}
+
 /*
 /*
 func TestBabel(t *testing.T) {
 func TestBabel(t *testing.T) {
 	src, err := os.ReadFile("babel7.js")
 	src, err := os.ReadFile("babel7.js")

+ 1 - 1
parser/expression.go

@@ -1461,7 +1461,7 @@ func (self *_parser) reinterpretAsArrayBindingPattern(left *ast.ArrayLiteral) as
 			rest = self.reinterpretAsDestructBindingTarget(spread.Expression)
 			rest = self.reinterpretAsDestructBindingTarget(spread.Expression)
 			value = value[:len(value)-1]
 			value = value[:len(value)-1]
 		} else {
 		} else {
-			value[i] = self.reinterpretAsBindingElement(item)
+			value[i] = self.reinterpretAsAssignmentElement(item)
 		}
 		}
 	}
 	}
 	return &ast.ArrayPattern{
 	return &ast.ArrayPattern{