Sloppy-mode let parsing
authorlittledan <littledan@chromium.org>
Fri, 28 Aug 2015 18:47:30 +0000 (11:47 -0700)
committerCommit bot <commit-bot@chromium.org>
Fri, 28 Aug 2015 18:47:40 +0000 (18:47 +0000)
commitdecc7b092ae90a378423df760690d58585e9ac71
treef18a7874519f2a579ef1d3ce2bf0c146228d3f4a
parentb41647543542be0ac009d5b707d4117af8b7ba6e
Sloppy-mode let parsing

This patch makes 'let' a contextual keyword in both strict and sloppy mode.
It behaves as a keyword when used at the beginning of a StatementListItem
or lexical declaration at the beginning of a for statement, if it is followed
by an identifier, [ or {. Implementing this change requires an extra token
look-ahead by the parser which is only invoked in certain cases (so as to
avoid parsing RegExps as ECMAScript tokens). This might result in a slowdown
of the scanner, but performance testing of this patch hasn't yet found much
of a regression.

BUG=v8:3305
LOG=Y
R=adamk,vogelheim

Review URL: https://codereview.chromium.org/1315673009

Cr-Commit-Position: refs/heads/master@{#30451}
src/parser.cc
src/preparser.cc
src/preparser.h
src/scanner.cc
src/scanner.h
src/token.h
test/cctest/test-parsing.cc
test/mjsunit/harmony/block-let-contextual-sloppy.js [new file with mode: 0644]