From: caitpotter88 Date: Tue, 16 Jun 2015 18:08:21 +0000 (-0700) Subject: [parser] parse `CalllExpression TemplateLiteral` production X-Git-Tag: upstream/4.7.83~1985 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6d22f7a7945f5c7371419d64753b9beeaafd71c6;p=platform%2Fupstream%2Fv8.git [parser] parse `CalllExpression TemplateLiteral` production BUG=v8:4183 R=arv@chromium.org, rossberg@chromium.org LOG=N Review URL: https://codereview.chromium.org/1184373002 Cr-Commit-Position: refs/heads/master@{#29055} --- diff --git a/src/preparser.h b/src/preparser.h index 41ebf97..862b7fb 100644 --- a/src/preparser.h +++ b/src/preparser.h @@ -3095,6 +3095,13 @@ ParserBase::ParseLeftHandSideExpression( break; } + case Token::TEMPLATE_SPAN: + case Token::TEMPLATE_TAIL: { + BindingPatternUnexpectedToken(classifier); + result = ParseTemplateLiteral(result, position(), classifier, CHECK_OK); + break; + } + default: return result; } diff --git a/test/mjsunit/es6/templates.js b/test/mjsunit/es6/templates.js index 0734f0e..feb7364 100644 --- a/test/mjsunit/es6/templates.js +++ b/test/mjsunit/es6/templates.js @@ -588,6 +588,26 @@ var global = this; })(); +(function testReturnValueAsTagFn() { + "use strict"; + var i = 0; + function makeTag() { + return function tag(cs) { + var args = Array.prototype.slice.call(arguments, 1); + var rcs = []; + rcs.raw = cs.map(function(s) { + return '!' + s + '!'; + }); + args.unshift(rcs); + return String.raw.apply(null, args); + } + } + assertEquals('!hi!', makeTag()`hi`); + assertEquals('!test!0!test!', makeTag()`test${0}test`); + assertEquals('!!', makeTag()``); +}); + + (function testToStringSubstitutions() { var a = { toString: function() { return "a"; },