Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(362)

Side by Side Diff: src/pattern-rewriter.cc

Issue 1384413002: Destructuring array without initializer throws an exception (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | test/cctest/test-parsing.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/ast.h" 5 #include "src/ast.h"
6 #include "src/messages.h" 6 #include "src/messages.h"
7 #include "src/parser.h" 7 #include "src/parser.h"
8 8
9 namespace v8 { 9 namespace v8 {
10 10
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 for (ObjectLiteralProperty* property : *pattern->properties()) { 237 for (ObjectLiteralProperty* property : *pattern->properties()) {
238 RecurseIntoSubpattern( 238 RecurseIntoSubpattern(
239 property->value(), 239 property->value(),
240 factory()->NewProperty(factory()->NewVariableProxy(temp), 240 factory()->NewProperty(factory()->NewVariableProxy(temp),
241 property->key(), RelocInfo::kNoPosition)); 241 property->key(), RelocInfo::kNoPosition));
242 } 242 }
243 } 243 }
244 244
245 245
246 void Parser::PatternRewriter::VisitArrayLiteral(ArrayLiteral* node) { 246 void Parser::PatternRewriter::VisitArrayLiteral(ArrayLiteral* node) {
247 auto iterator = CreateTempVar( 247 auto temp = CreateTempVar(current_value_);
248 descriptor_->parser->GetIterator(current_value_, factory())); 248
249 block_->statements()->Add(descriptor_->parser->BuildAssertIsCoercible(temp),
250 zone());
251
252 auto iterator = CreateTempVar(descriptor_->parser->GetIterator(
253 factory()->NewVariableProxy(temp), factory()));
249 auto done = CreateTempVar( 254 auto done = CreateTempVar(
250 factory()->NewBooleanLiteral(false, RelocInfo::kNoPosition)); 255 factory()->NewBooleanLiteral(false, RelocInfo::kNoPosition));
251 auto result = CreateTempVar(); 256 auto result = CreateTempVar();
252 auto v = CreateTempVar(); 257 auto v = CreateTempVar();
253 258
254 Spread* spread = nullptr; 259 Spread* spread = nullptr;
255 for (Expression* value : *node->values()) { 260 for (Expression* value : *node->values()) {
256 if (value->IsSpread()) { 261 if (value->IsSpread()) {
257 spread = value->AsSpread(); 262 spread = value->AsSpread();
258 break; 263 break;
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 NOT_A_PATTERN(TryFinallyStatement) 416 NOT_A_PATTERN(TryFinallyStatement)
412 NOT_A_PATTERN(UnaryOperation) 417 NOT_A_PATTERN(UnaryOperation)
413 NOT_A_PATTERN(VariableDeclaration) 418 NOT_A_PATTERN(VariableDeclaration)
414 NOT_A_PATTERN(WhileStatement) 419 NOT_A_PATTERN(WhileStatement)
415 NOT_A_PATTERN(WithStatement) 420 NOT_A_PATTERN(WithStatement)
416 NOT_A_PATTERN(Yield) 421 NOT_A_PATTERN(Yield)
417 422
418 #undef NOT_A_PATTERN 423 #undef NOT_A_PATTERN
419 } // namespace internal 424 } // namespace internal
420 } // namespace v8 425 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | test/cctest/test-parsing.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698