-
Daniel Clifford authored
Indexed fields in classes can now be initialized using iterators and a spread syntax, e.g.: class Foo { length: Smi; elements[length]: Object; } new Foo{length: 5, elements: ...iter}; where iter implements Torque's iterator protocol. This protocol requires the definition of a method with the following signature: Next(): <type> labels NoMore; Where <type> is the Torque type of the values to be iterated. In the case of indexed field initialization, the type must be the field's type or a subtype thereof. Field initialization with spread is desugared into a loop that calls the spread iterator's Next method and assigns each returned value in order to the corresponding indexed field element. The general machinery for the spread syntax has been added to the ast and parser, however, it can currently only be used in the specific context of indexed field initialization. Spread operators used in any other context will cause an error. Bug: v8:7793 Change-Id: If071e61db8166573c28d13318879c88ba96f6d98 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1550407 Commit-Queue: Daniel Clifford <danno@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#60639}
62a32805