mirror of
https://github.com/tc39/test262.git
synced 2025-07-27 07:54:41 +02:00
Add test cases for spread operator
The operand of the spread operator may be an AssignmentExpression. Add test cases which demonstrate this.
This commit is contained in:
parent
2658524163
commit
8c8397573c
33
src/spread/mult-expr.case
Normal file
33
src/spread/mult-expr.case
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Spread operator applied to AssignmentExpression following other elements
|
||||||
|
template: default
|
||||||
|
info: |
|
||||||
|
12.3.6.1 Runtime Semantics: ArgumentListEvaluation
|
||||||
|
|
||||||
|
ArgumentList : ArgumentList , ... AssignmentExpression
|
||||||
|
|
||||||
|
1. Let precedingArgs be the result of evaluating ArgumentList.
|
||||||
|
2. Let spreadRef be the result of evaluating AssignmentExpression.
|
||||||
|
3. Let iterator be GetIterator(GetValue(spreadRef) ).
|
||||||
|
4. ReturnIfAbrupt(iterator).
|
||||||
|
5. Repeat
|
||||||
|
a. Let next be IteratorStep(iterator).
|
||||||
|
b. ReturnIfAbrupt(next).
|
||||||
|
c. If next is false, return precedingArgs.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- setup
|
||||||
|
var source = [3, 4, 5];
|
||||||
|
var target;
|
||||||
|
//- args
|
||||||
|
1, 2, ...target = source
|
||||||
|
//- body
|
||||||
|
assert.sameValue(arguments.length, 5);
|
||||||
|
assert.sameValue(arguments[0], 1);
|
||||||
|
assert.sameValue(arguments[1], 2);
|
||||||
|
assert.sameValue(arguments[2], 3);
|
||||||
|
assert.sameValue(arguments[3], 4);
|
||||||
|
assert.sameValue(arguments[4], 5);
|
||||||
|
assert.sameValue(target, source);
|
29
src/spread/mult-literal.case
Normal file
29
src/spread/mult-literal.case
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Spread operator applied to AssignmentExpression following other elements
|
||||||
|
template: default
|
||||||
|
info: |
|
||||||
|
12.3.6.1 Runtime Semantics: ArgumentListEvaluation
|
||||||
|
|
||||||
|
ArgumentList : ArgumentList , ... AssignmentExpression
|
||||||
|
|
||||||
|
1. Let precedingArgs be the result of evaluating ArgumentList.
|
||||||
|
2. Let spreadRef be the result of evaluating AssignmentExpression.
|
||||||
|
3. Let iterator be GetIterator(GetValue(spreadRef) ).
|
||||||
|
4. ReturnIfAbrupt(iterator).
|
||||||
|
5. Repeat
|
||||||
|
a. Let next be IteratorStep(iterator).
|
||||||
|
b. ReturnIfAbrupt(next).
|
||||||
|
c. If next is false, return precedingArgs.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- args
|
||||||
|
5, ...[6, 7, 8], 9
|
||||||
|
//- body
|
||||||
|
assert.sameValue(arguments.length, 5);
|
||||||
|
assert.sameValue(arguments[0], 5);
|
||||||
|
assert.sameValue(arguments[1], 6);
|
||||||
|
assert.sameValue(arguments[2], 7);
|
||||||
|
assert.sameValue(arguments[3], 8);
|
||||||
|
assert.sameValue(arguments[4], 9);
|
35
src/spread/sngl-expr.case
Normal file
35
src/spread/sngl-expr.case
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Spread operator applied to AssignmentExpression as only element
|
||||||
|
template: default
|
||||||
|
info: |
|
||||||
|
12.3.6.1 Runtime Semantics: ArgumentListEvaluation
|
||||||
|
|
||||||
|
ArgumentList : ... AssignmentExpression
|
||||||
|
|
||||||
|
1. Let list be an empty List.
|
||||||
|
2. Let spreadRef be the result of evaluating AssignmentExpression.
|
||||||
|
3. Let spreadObj be GetValue(spreadRef).
|
||||||
|
4. Let iterator be GetIterator(spreadObj).
|
||||||
|
5. ReturnIfAbrupt(iterator).
|
||||||
|
6. Repeat
|
||||||
|
a. Let next be IteratorStep(iterator).
|
||||||
|
b. ReturnIfAbrupt(next).
|
||||||
|
c. If next is false, return list.
|
||||||
|
d. Let nextArg be IteratorValue(next).
|
||||||
|
e. ReturnIfAbrupt(nextArg).
|
||||||
|
f. Append nextArg as the last element of list.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- setup
|
||||||
|
var source = [2, 3, 4];
|
||||||
|
var target;
|
||||||
|
//- args
|
||||||
|
...target = source
|
||||||
|
//- body
|
||||||
|
assert.sameValue(arguments.length, 3);
|
||||||
|
assert.sameValue(arguments[0], 2);
|
||||||
|
assert.sameValue(arguments[1], 3);
|
||||||
|
assert.sameValue(arguments[2], 4);
|
||||||
|
assert.sameValue(target, source);
|
31
src/spread/sngl-literal.case
Normal file
31
src/spread/sngl-literal.case
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Spread operator applied to array literal as only element
|
||||||
|
template: default
|
||||||
|
info: |
|
||||||
|
12.3.6.1 Runtime Semantics: ArgumentListEvaluation
|
||||||
|
|
||||||
|
ArgumentList : ... AssignmentExpression
|
||||||
|
|
||||||
|
1. Let list be an empty List.
|
||||||
|
2. Let spreadRef be the result of evaluating AssignmentExpression.
|
||||||
|
3. Let spreadObj be GetValue(spreadRef).
|
||||||
|
4. Let iterator be GetIterator(spreadObj).
|
||||||
|
5. ReturnIfAbrupt(iterator).
|
||||||
|
6. Repeat
|
||||||
|
a. Let next be IteratorStep(iterator).
|
||||||
|
b. ReturnIfAbrupt(next).
|
||||||
|
c. If next is false, return list.
|
||||||
|
d. Let nextArg be IteratorValue(next).
|
||||||
|
e. ReturnIfAbrupt(nextArg).
|
||||||
|
f. Append nextArg as the last element of list.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- args
|
||||||
|
...[3, 4, 5]
|
||||||
|
//- body
|
||||||
|
assert.sameValue(arguments.length, 3);
|
||||||
|
assert.sameValue(arguments[0], 3);
|
||||||
|
assert.sameValue(arguments[1], 4);
|
||||||
|
assert.sameValue(arguments[2], 5);
|
Loading…
x
Reference in New Issue
Block a user