[error] Improve error message for array spread

... on non-iterable object. In CallPrinter::VisitAssignment,
when found_ is true, we could print node->target to show the
error node value, avoid printing twice for the assignment.

Bug: v8:10854
Change-Id: I5f295f46b5639b715f762935e675598d1d780f98
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3586763
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: 王澳 <wangao.james@bytedance.com>
Cr-Commit-Position: refs/heads/main@{#79997}
This commit is contained in:
jameslahm 2022-04-15 08:45:16 +08:00 committed by V8 LUCI CQ
parent 02d8c126b7
commit f2c4c598fb
3 changed files with 14 additions and 0 deletions

View File

@ -343,6 +343,10 @@ void CallPrinter::VisitAssignment(Assignment* node) {
}
}
if (!was_found) {
if (found_) {
Find(node->target(), true);
return;
}
Find(node->target());
if (node->target()->IsArrayLiteral()) {
// Special case the visit for destructuring array assignment.

View File

@ -0,0 +1,5 @@
// Copyright 2022 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
[...(a={})]

View File

@ -0,0 +1,5 @@
*%(basename)s:5: TypeError: a is not iterable
[...(a={})]
^
TypeError: a is not iterable
at *%(basename)s:5:7