diff --git a/test/language/expressions/template/caching/differing-expressions-eval.js b/test/language/expressions/tagged-template/cache-differing-expressions-eval.js similarity index 90% rename from test/language/expressions/template/caching/differing-expressions-eval.js rename to test/language/expressions/tagged-template/cache-differing-expressions-eval.js index c233db3b86..aa09319aa1 100644 --- a/test/language/expressions/template/caching/differing-expressions-eval.js +++ b/test/language/expressions/tagged-template/cache-differing-expressions-eval.js @@ -2,7 +2,8 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- es6id: 12.2.8 -description: > +description: Template caching using distinct expressions within `eval` +info: > Previously-created template objects should be retrieved from the internal template registry when their source is identical but their expressions evaluate to different values and the tagged template is being evaluated in diff --git a/test/language/expressions/template/caching/differing-expressions-new-function.js b/test/language/expressions/tagged-template/cache-differing-expressions-new-function.js similarity index 91% rename from test/language/expressions/template/caching/differing-expressions-new-function.js rename to test/language/expressions/tagged-template/cache-differing-expressions-new-function.js index 4fe47eabc1..4a8cdb6986 100644 --- a/test/language/expressions/template/caching/differing-expressions-new-function.js +++ b/test/language/expressions/tagged-template/cache-differing-expressions-new-function.js @@ -2,7 +2,8 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- es6id: 12.2.8 -description: > +description: Template caching using distinct expressions within `new Function` +info: > Previously-created template objects should be retrieved from the internal template registry when their source is identical but their expressions evaluate to different values and the tagged template is being evaluated in diff --git a/test/language/expressions/template/caching/differing-expressions.js b/test/language/expressions/tagged-template/cache-differing-expressions.js similarity index 91% rename from test/language/expressions/template/caching/differing-expressions.js rename to test/language/expressions/tagged-template/cache-differing-expressions.js index 88495e3504..e74ba4601c 100644 --- a/test/language/expressions/template/caching/differing-expressions.js +++ b/test/language/expressions/tagged-template/cache-differing-expressions.js @@ -2,7 +2,8 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- es6id: 12.2.8 -description: > +description: Template caching using distinct expressions +info: > Previously-created template objects should be retrieved from the internal template registry when their source is identical but their expressions evaluate to different values. diff --git a/test/language/expressions/template/caching/differing-raw-strings.js b/test/language/expressions/tagged-template/cache-differing-raw-strings.js similarity index 87% rename from test/language/expressions/template/caching/differing-raw-strings.js rename to test/language/expressions/tagged-template/cache-differing-raw-strings.js index 98bb3568ec..252736f504 100644 --- a/test/language/expressions/template/caching/differing-raw-strings.js +++ b/test/language/expressions/tagged-template/cache-differing-raw-strings.js @@ -2,7 +2,8 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- es6id: 12.2.8 -description: > +description: Templates are cached according to their "raw" representation +info: > The internal template registry should be queried according to the "raw" strings of the tagged template. ---*/ diff --git a/test/language/expressions/template/caching/differing-string-count.js b/test/language/expressions/tagged-template/cache-differing-string-count.js similarity index 88% rename from test/language/expressions/template/caching/differing-string-count.js rename to test/language/expressions/tagged-template/cache-differing-string-count.js index 30afbe9426..60e2eb23d5 100644 --- a/test/language/expressions/template/caching/differing-string-count.js +++ b/test/language/expressions/tagged-template/cache-differing-string-count.js @@ -2,7 +2,8 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- es6id: 12.2.8 -description: > +description: Templates are cached according to the number of "raw" strings +info: > The internal template registry should be queried according to the number of "raw" strings in the tagged template. ---*/ diff --git a/test/language/expressions/template/caching/identical-source-eval.js b/test/language/expressions/tagged-template/cache-identical-source-eval.js similarity index 89% rename from test/language/expressions/template/caching/identical-source-eval.js rename to test/language/expressions/tagged-template/cache-identical-source-eval.js index a835344820..383fc4f593 100644 --- a/test/language/expressions/template/caching/identical-source-eval.js +++ b/test/language/expressions/tagged-template/cache-identical-source-eval.js @@ -2,7 +2,8 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- es6id: 12.2.8 -description: > +description: Template caching using identical expressions within `eval` +info: > Previously-created template objects should be retrieved from the internal template registry when their source is identical and the tagged template is being evaluated in an `eval` context. diff --git a/test/language/expressions/template/caching/identical-source-new-function.js b/test/language/expressions/tagged-template/cache-identical-source-new-function.js similarity index 89% rename from test/language/expressions/template/caching/identical-source-new-function.js rename to test/language/expressions/tagged-template/cache-identical-source-new-function.js index f262e55c8d..511186f218 100644 --- a/test/language/expressions/template/caching/identical-source-new-function.js +++ b/test/language/expressions/tagged-template/cache-identical-source-new-function.js @@ -2,7 +2,8 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- es6id: 12.2.8 -description: > +description: Template caching using identical expressions within `new Function` +info: > Previously-created template objects should be retrieved from the internal template registry when their source is identical and the tagged template is being evaluated in a `new Function` context. diff --git a/test/language/expressions/template/caching/identical-source.js b/test/language/expressions/tagged-template/cache-identical-source.js similarity index 91% rename from test/language/expressions/template/caching/identical-source.js rename to test/language/expressions/tagged-template/cache-identical-source.js index dc844481f2..3e09fbd937 100644 --- a/test/language/expressions/template/caching/identical-source.js +++ b/test/language/expressions/tagged-template/cache-identical-source.js @@ -2,7 +2,8 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- es6id: 12.2.8 -description: > +description: Template caching using identical expressions +info: > Previously-created template objects should be retrieved from the internal template registry when their source is identical. ---*/ diff --git a/test/language/expressions/tagged-template/call-expression-argument-list-evaluation.js b/test/language/expressions/tagged-template/call-expression-argument-list-evaluation.js new file mode 100644 index 0000000000..8c46b4b4db --- /dev/null +++ b/test/language/expressions/tagged-template/call-expression-argument-list-evaluation.js @@ -0,0 +1,42 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.3.7 +description: Argument list evalution for call expresions +info: > + A tagged template is a function call where the arguments of the call are + derived from a TemplateLiteral. The actual arguments include a template + object and the values produced by evaluating the expressions embedded + within the TemplateLiteral. +---*/ + +var number = 5; +var string = 'str'; +var object = {}; +function fn() { return 'result'; } +var calls; + +calls = 0; +(function() { + return function() { + calls++; + assert.sameValue( + arguments.length, 1, 'NoSubstitutionTemplate arguments length' + ); + }; +})()`NoSubstitutionTemplate`; +assert.sameValue(calls, 1, 'NoSubstitutionTemplate function invocation'); + +calls = 0; +(function() { + return function(site, n, s, o, f, r) { + calls++; + assert.sameValue(n, number); + assert.sameValue(s, string); + assert.sameValue(o, object); + assert.sameValue(f, fn); + assert.sameValue(r, 'result'); + assert.sameValue(arguments.length, 6, 'TemplateHead arguments length'); + }; +})()`TemplateHead${number}TemplateSpans${string}${object}${fn}${fn()}`; +assert.sameValue(calls, 1, 'TemplateHead function invocation'); diff --git a/test/language/expressions/tagged-template/call-expression-context-no-strict.js b/test/language/expressions/tagged-template/call-expression-context-no-strict.js new file mode 100644 index 0000000000..5ca66f999a --- /dev/null +++ b/test/language/expressions/tagged-template/call-expression-context-no-strict.js @@ -0,0 +1,31 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.3.7 +description: Invocation context for call expressions +info: > + A tagged template is a function call where the arguments of the call are + derived from a TemplateLiteral. The actual arguments include a template + object and the values produced by evaluating the expressions embedded + within the TemplateLiteral. +flags: [noStrict] +---*/ +var context = null; +var fn = function() { + return function() { + context = this; + }; +}; + +fn()`NoSubstitutionTemplate`; + +assert.sameValue(context, this); + +fn = function() { + return () => { context = this; }; +}; + +context = null; +fn()`NoSubstitutionTemplate`; + +assert.sameValue(context, this); diff --git a/test/language/expressions/tagged-template/call-expression-context-strict.js b/test/language/expressions/tagged-template/call-expression-context-strict.js new file mode 100644 index 0000000000..d90aa46167 --- /dev/null +++ b/test/language/expressions/tagged-template/call-expression-context-strict.js @@ -0,0 +1,31 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.3.7 +description: Invocation context for call expressions +info: > + A tagged template is a function call where the arguments of the call are + derived from a TemplateLiteral. The actual arguments include a template + object and the values produced by evaluating the expressions embedded + within the TemplateLiteral. +flags: [onlyStrict] +---*/ +var context = null; +var fn = function() { + return function() { + context = this; + }; +}; + +fn()`NoSubstitutionTemplate`; + +assert.sameValue(context, undefined); + +fn = function() { + return () => { context = this; }; +}; + +context = null; +fn()`NoSubstitutionTemplate`; + +assert.sameValue(context, undefined); diff --git a/test/language/expressions/template/tagged-chained-application.js b/test/language/expressions/tagged-template/chained-application.js similarity index 100% rename from test/language/expressions/template/tagged-chained-application.js rename to test/language/expressions/tagged-template/chained-application.js diff --git a/test/language/expressions/template/tagged-constructor-invocation.js b/test/language/expressions/tagged-template/constructor-invocation.js similarity index 100% rename from test/language/expressions/template/tagged-constructor-invocation.js rename to test/language/expressions/tagged-template/constructor-invocation.js diff --git a/test/language/expressions/template/tagged-call-expression-argument-list-evaluation.js b/test/language/expressions/tagged-template/member-expression-argument-list-evaluation.js similarity index 94% rename from test/language/expressions/template/tagged-call-expression-argument-list-evaluation.js rename to test/language/expressions/tagged-template/member-expression-argument-list-evaluation.js index ffd67875b2..866efa1995 100644 --- a/test/language/expressions/template/tagged-call-expression-argument-list-evaluation.js +++ b/test/language/expressions/tagged-template/member-expression-argument-list-evaluation.js @@ -2,7 +2,8 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- es6id: 12.3.7 -description: > +description: Argument list evalution for member expresions +info: > A tagged template is a function call where the arguments of the call are derived from a TemplateLiteral. The actual arguments include a template object and the values produced by evaluating the expressions embedded diff --git a/test/language/expressions/template/tagged-member-expression-context.js b/test/language/expressions/tagged-template/member-expression-context.js similarity index 90% rename from test/language/expressions/template/tagged-member-expression-context.js rename to test/language/expressions/tagged-template/member-expression-context.js index 818a9e50c6..8575e6e64d 100644 --- a/test/language/expressions/template/tagged-member-expression-context.js +++ b/test/language/expressions/tagged-template/member-expression-context.js @@ -2,7 +2,8 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- es6id: 12.3.7 -description: > +description: Invocation context for member expressions +info: > A tagged template is a function call where the arguments of the call are derived from a TemplateLiteral. The actual arguments include a template object and the values produced by evaluating the expressions embedded diff --git a/test/language/expressions/template/tagged-template-object-frozen-non-strict.js b/test/language/expressions/tagged-template/template-object-frozen-non-strict.js similarity index 89% rename from test/language/expressions/template/tagged-template-object-frozen-non-strict.js rename to test/language/expressions/tagged-template/template-object-frozen-non-strict.js index 3b489f2938..d338fa5d08 100644 --- a/test/language/expressions/template/tagged-template-object-frozen-non-strict.js +++ b/test/language/expressions/tagged-template/template-object-frozen-non-strict.js @@ -2,7 +2,8 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- es6id: 12.3.7 -description: > +description: Template objects are frozen (as demonstrated outside of strict mode) +info: > The first argument to a tagged template should be frozen and define a `raw` property that is also frozen. flags: [noStrict] diff --git a/test/language/expressions/template/tagged-template-object-frozen-strict.js b/test/language/expressions/tagged-template/template-object-frozen-strict.js similarity index 89% rename from test/language/expressions/template/tagged-template-object-frozen-strict.js rename to test/language/expressions/tagged-template/template-object-frozen-strict.js index 2f5cb7b309..9853d22838 100644 --- a/test/language/expressions/template/tagged-template-object-frozen-strict.js +++ b/test/language/expressions/tagged-template/template-object-frozen-strict.js @@ -2,7 +2,8 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- es6id: 12.3.7 -description: > +description: Template objects are frozen (as demonstrated within strict mode) +info: > The first argument to a tagged template should be frozen and define a `raw` property that is also frozen. flags: [onlyStrict] diff --git a/test/language/expressions/template/tagged-template-object.js b/test/language/expressions/tagged-template/template-object.js similarity index 95% rename from test/language/expressions/template/tagged-template-object.js rename to test/language/expressions/tagged-template/template-object.js index 15f5b092d2..b4286e1467 100644 --- a/test/language/expressions/template/tagged-template-object.js +++ b/test/language/expressions/tagged-template/template-object.js @@ -2,7 +2,8 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- es6id: 12.3.7 -description: > +description: Properties of the template object +info: > The first argument to a tagged template should be a template object as defined by the GetTemplateObject abstract operation. includes: [propertyHelper.js] diff --git a/test/language/expressions/template/evaluation-order.js b/test/language/expressions/template-literal/evaluation-order.js similarity index 86% rename from test/language/expressions/template/evaluation-order.js rename to test/language/expressions/template-literal/evaluation-order.js index b707f6d2c2..45c5bc664f 100644 --- a/test/language/expressions/template/evaluation-order.js +++ b/test/language/expressions/template-literal/evaluation-order.js @@ -2,8 +2,7 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- es6id: 12.2.8 -description: > - Expressions should be evaluated in left-to-right order. +description: Expressions should be evaluated in left-to-right order. ---*/ var tag = function(templateObject, a, b, c) { diff --git a/test/language/expressions/template/template-values/invalid/hexidecimal-character-escape-sequence-truncated.js b/test/language/expressions/template-literal/invalid-hexidecimal-character-escape-sequence-truncated.js similarity index 74% rename from test/language/expressions/template/template-values/invalid/hexidecimal-character-escape-sequence-truncated.js rename to test/language/expressions/template-literal/invalid-hexidecimal-character-escape-sequence-truncated.js index 49403e12d8..e3c07bf7bb 100644 --- a/test/language/expressions/template/template-values/invalid/hexidecimal-character-escape-sequence-truncated.js +++ b/test/language/expressions/template-literal/invalid-hexidecimal-character-escape-sequence-truncated.js @@ -1,11 +1,12 @@ // Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- -es6id: 11.8.6 -description: > +es6id: 11.8.6.1 +description: Invalid hexidecimal character escape sequence +info: > The TV of TemplateCharacter :: \ EscapeSequence is the SV of EscapeSequence. negative: SyntaxError ---*/ -(function() {})`\x`; +`\x0`; diff --git a/test/language/expressions/template/template-values/invalid/legacy-octal-escape-sequence.js b/test/language/expressions/template-literal/invalid-legacy-octal-escape-sequence.js similarity index 84% rename from test/language/expressions/template/template-values/invalid/legacy-octal-escape-sequence.js rename to test/language/expressions/template-literal/invalid-legacy-octal-escape-sequence.js index 56a7611d88..baa0873896 100644 --- a/test/language/expressions/template/template-values/invalid/legacy-octal-escape-sequence.js +++ b/test/language/expressions/template-literal/invalid-legacy-octal-escape-sequence.js @@ -2,10 +2,11 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- es6id: 16.1 -description: > +description: Invalid octal escape sequence +info: > TemplateCharacter (11.8.6) must not be extended to include LegacyOctalEscapeSequence as defined in B.1.2. negative: SyntaxError ---*/ -(function() {})`\00`; +`\00`; diff --git a/test/language/expressions/template/template-values/invalid/unicode-escape-sequence-truncated.js b/test/language/expressions/template-literal/invalid-unicode-escape-sequence-truncated.js similarity index 82% rename from test/language/expressions/template/template-values/invalid/unicode-escape-sequence-truncated.js rename to test/language/expressions/template-literal/invalid-unicode-escape-sequence-truncated.js index 4a228da532..79a1826c9e 100644 --- a/test/language/expressions/template/template-values/invalid/unicode-escape-sequence-truncated.js +++ b/test/language/expressions/template-literal/invalid-unicode-escape-sequence-truncated.js @@ -2,10 +2,11 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- es6id: 11.8.6 -description: > +description: Invalid unicode escape sequence +info: > The TV of TemplateCharacter :: \ EscapeSequence is the SV of EscapeSequence. negative: SyntaxError ---*/ -(function() {})`\u`; +`\u0`; diff --git a/test/language/expressions/template-literal/literal-expr-abrupt.js b/test/language/expressions/template-literal/literal-expr-abrupt.js new file mode 100644 index 0000000000..33c17272aa --- /dev/null +++ b/test/language/expressions/template-literal/literal-expr-abrupt.js @@ -0,0 +1,17 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Abrupt completion when evaluating expression of TemplateLiteral +info: > + TemplateLiteral : TemplateHead Expression TemplateSpans + + 1. Let head be the TV of TemplateHead as defined in 11.8.6. + 2. Let sub be the result of evaluating Expression. + 3. Let middle be ToString(sub). + 4. ReturnIfAbrupt(middle). +---*/ + +assert.throws(Test262Error, function() { + `${function() { throw new Test262Error(); }()}`; +}); diff --git a/test/language/expressions/template-literal/literal-expr-function.js b/test/language/expressions/template-literal/literal-expr-function.js new file mode 100644 index 0000000000..6d933fe5b0 --- /dev/null +++ b/test/language/expressions/template-literal/literal-expr-function.js @@ -0,0 +1,16 @@ +// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Function invocation in expression position of TemplateLiteral +info: > + TemplateLiteral : TemplateHead Expression TemplateSpans + + 1. Let head be the TV of TemplateHead as defined in 11.8.6. + 2. Let sub be the result of evaluating Expression. + 3. Let middle be ToString(sub). +---*/ + +function fn() { return 'result'; } + +assert.sameValue(`foo ${fn()} bar`, 'foo result bar'); diff --git a/test/language/expressions/template-literal/literal-expr-member-expr.js b/test/language/expressions/template-literal/literal-expr-member-expr.js new file mode 100644 index 0000000000..65aea5ae76 --- /dev/null +++ b/test/language/expressions/template-literal/literal-expr-member-expr.js @@ -0,0 +1,34 @@ +// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: MemberExpression in expression position of TemplateLiteral +info: > + TemplateLiteral : TemplateHead Expression TemplateSpans + + 1. Let head be the TV of TemplateHead as defined in 11.8.6. + 2. Let sub be the result of evaluating Expression. + 3. Let middle be ToString(sub). +---*/ + +var object = { + number: 5, + string: 'stringValue' +}; + +assert.sameValue( + `foo ${object.number} bar`, 'foo 5 bar', 'number value property' +); +assert.sameValue( + `foo ${object.string} bar`, 'foo stringValue bar', 'string value property' +); +assert.sameValue( + `foo ${object['string']} bar`, + 'foo stringValue bar', + 'string value property (single-quote string dereference)' +); +assert.sameValue( + `foo ${object["string"]} bar`, + 'foo stringValue bar', + 'string value property (double-quote string dereference)' +); diff --git a/test/language/expressions/template-literal/literal-expr-method.js b/test/language/expressions/template-literal/literal-expr-method.js new file mode 100644 index 0000000000..40788c3db7 --- /dev/null +++ b/test/language/expressions/template-literal/literal-expr-method.js @@ -0,0 +1,17 @@ +// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Method invocation in expression position of TemplateLiteral +info: > + TemplateLiteral : TemplateHead Expression TemplateSpans + + 1. Let head be the TV of TemplateHead as defined in 11.8.6. + 2. Let sub be the result of evaluating Expression. + 3. Let middle be ToString(sub). +---*/ +var object = { + fn: function() { return 'result'; } +}; + +assert.sameValue(`foo ${object.fn()} bar`, 'foo result bar'); diff --git a/test/language/expressions/template/object.js b/test/language/expressions/template-literal/literal-expr-obj.js similarity index 67% rename from test/language/expressions/template/object.js rename to test/language/expressions/template-literal/literal-expr-obj.js index 59a40268b7..3cd21ad00d 100644 --- a/test/language/expressions/template/object.js +++ b/test/language/expressions/template-literal/literal-expr-obj.js @@ -1,11 +1,16 @@ // Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- -es6id: 12.2.8 -description: > - Expressions should be evaluated and converted to Strings according to the - ToString abstract operation. +es6id: 12.2.8.5 +description: Object reference in expression position of TemplateLiteral +info: > + TemplateLiteral : TemplateHead Expression TemplateSpans + + 1. Let head be the TV of TemplateHead as defined in 11.8.6. + 2. Let sub be the result of evaluating Expression. + 3. Let middle be ToString(sub). ---*/ + var plain = {}; var custom = { toString: function() { diff --git a/test/language/expressions/template-literal/literal-expr-primitive.js b/test/language/expressions/template-literal/literal-expr-primitive.js new file mode 100644 index 0000000000..4774eacd8e --- /dev/null +++ b/test/language/expressions/template-literal/literal-expr-primitive.js @@ -0,0 +1,15 @@ +// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Primitive value in expression position of TemplateLiteral +info: > + TemplateLiteral : TemplateHead Expression TemplateSpans + + 1. Let head be the TV of TemplateHead as defined in 11.8.6. + 2. Let sub be the result of evaluating Expression. + 3. Let middle be ToString(sub). +---*/ + +assert.sameValue(`foo ${5} bar`, 'foo 5 bar', 'number value'); +assert.sameValue(`foo ${'string'} bar`, 'foo string bar', 'string value'); diff --git a/test/language/expressions/template-literal/literal-expr-template.js b/test/language/expressions/template-literal/literal-expr-template.js new file mode 100644 index 0000000000..04e6beeaef --- /dev/null +++ b/test/language/expressions/template-literal/literal-expr-template.js @@ -0,0 +1,14 @@ +// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Template literal in expression position of TemplateLiteral +info: > + TemplateLiteral : TemplateHead Expression TemplateSpans + + 1. Let head be the TV of TemplateHead as defined in 11.8.6. + 2. Let sub be the result of evaluating Expression. + 3. Let middle be ToString(sub). +---*/ + +assert.sameValue(`foo ${`bar ${5} baz`} qux`, 'foo bar 5 baz qux'); diff --git a/test/language/expressions/template-literal/literal-expr-tostr-error.js b/test/language/expressions/template-literal/literal-expr-tostr-error.js new file mode 100644 index 0000000000..d3534ecbac --- /dev/null +++ b/test/language/expressions/template-literal/literal-expr-tostr-error.js @@ -0,0 +1,23 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Abrupt completion when converting expression value of TemplateLiteral +info: > + TemplateLiteral : TemplateHead Expression TemplateSpans + + 1. Let head be the TV of TemplateHead as defined in 11.8.6. + 2. Let sub be the result of evaluating Expression. + 3. Let middle be ToString(sub). + 4. ReturnIfAbrupt(middle). +---*/ + +var obj = { + toString: function() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + `${obj}`; +}); diff --git a/test/language/expressions/template-literal/middle-list-many-expr-abrupt.js b/test/language/expressions/template-literal/middle-list-many-expr-abrupt.js new file mode 100644 index 0000000000..41ec352c3e --- /dev/null +++ b/test/language/expressions/template-literal/middle-list-many-expr-abrupt.js @@ -0,0 +1,19 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Abrupt completion when evaluating expression of TemplateMiddleList +info: > + TemplateMiddleList : TemplateMiddleList TemplateMiddle Expression + + 1. Let rest be the result of evaluating TemplateMiddleList . + 2. ReturnIfAbrupt(rest). + 3. Let middle be the TV of TemplateMiddle as defined in 11.8.6. + 4. Let sub be the result of evaluating Expression. + 5. Let last be ToString(sub). + 6. ReturnIfAbrupt(last). +---*/ + +assert.throws(Test262Error, function() { + `${0}${1}${function() { throw new Test262Error(); }()}`; +}); diff --git a/test/language/expressions/template-literal/middle-list-many-expr-function.js b/test/language/expressions/template-literal/middle-list-many-expr-function.js new file mode 100644 index 0000000000..3ed6abe6ee --- /dev/null +++ b/test/language/expressions/template-literal/middle-list-many-expr-function.js @@ -0,0 +1,18 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Function invocation in expression position of TemplateMiddleList +info: > + TemplateMiddleList : TemplateMiddleList TemplateMiddle Expression + + 1. Let rest be the result of evaluating TemplateMiddleList . + 2. ReturnIfAbrupt(rest). + 3. Let middle be the TV of TemplateMiddle as defined in 11.8.6. + 4. Let sub be the result of evaluating Expression. + 5. Let last be ToString(sub). +---*/ + +function fn() { return 'result'; } + +assert.sameValue(`${0} ${1} ${fn()}`, '0 1 result'); diff --git a/test/language/expressions/template-literal/middle-list-many-expr-member-expr.js b/test/language/expressions/template-literal/middle-list-many-expr-member-expr.js new file mode 100644 index 0000000000..fa01c95cec --- /dev/null +++ b/test/language/expressions/template-literal/middle-list-many-expr-member-expr.js @@ -0,0 +1,38 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: MemberExpression in expression position of TemplateMiddleList +info: > + TemplateMiddleList : TemplateMiddleList TemplateMiddle Expression + + 1. Let rest be the result of evaluating TemplateMiddleList . + 2. ReturnIfAbrupt(rest). + 3. Let middle be the TV of TemplateMiddle as defined in 11.8.6. + 4. Let sub be the result of evaluating Expression. + 5. Let last be ToString(sub). +---*/ + +var object = { + number: 5, + string: 'stringValue' +}; + +assert.sameValue( + `${0} ${1} ${object.number} bar`, '0 1 5 bar', 'number value property' +); +assert.sameValue( + `${0} ${1} ${object.string} bar`, + '0 1 stringValue bar', + 'string value property' +); +assert.sameValue( + `${0} ${1} ${object['string']} bar`, + '0 1 stringValue bar', + 'string value property (single-quote string dereference)' +); +assert.sameValue( + `${0} ${1} ${object["string"]} bar`, + '0 1 stringValue bar', + 'string value property (double-quote string dereference)' +); diff --git a/test/language/expressions/template-literal/middle-list-many-expr-method.js b/test/language/expressions/template-literal/middle-list-many-expr-method.js new file mode 100644 index 0000000000..053518dd0a --- /dev/null +++ b/test/language/expressions/template-literal/middle-list-many-expr-method.js @@ -0,0 +1,19 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Method invocation in expression position of TemplateMiddleList +info: > + TemplateMiddleList : TemplateMiddleList TemplateMiddle Expression + + 1. Let rest be the result of evaluating TemplateMiddleList . + 2. ReturnIfAbrupt(rest). + 3. Let middle be the TV of TemplateMiddle as defined in 11.8.6. + 4. Let sub be the result of evaluating Expression. + 5. Let last be ToString(sub). +---*/ +var object = { + fn: function() { return 'result'; } +}; + +assert.sameValue(`${0} ${1} ${object.fn()} bar`, '0 1 result bar'); diff --git a/test/language/expressions/template-literal/middle-list-many-expr-obj.js b/test/language/expressions/template-literal/middle-list-many-expr-obj.js new file mode 100644 index 0000000000..7580a0a03b --- /dev/null +++ b/test/language/expressions/template-literal/middle-list-many-expr-obj.js @@ -0,0 +1,31 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Object reference in expression position of TemplateMiddleList +info: > + TemplateMiddleList : TemplateMiddleList TemplateMiddle Expression + + 1. Let rest be the result of evaluating TemplateMiddleList . + 2. ReturnIfAbrupt(rest). + 3. Let middle be the TV of TemplateMiddle as defined in 11.8.6. + 4. Let sub be the result of evaluating Expression. + 5. Let last be ToString(sub). +---*/ + +var plain = {}; +var custom = { + toString: function() { + return '"own" toString'; + } +}; + +assert.sameValue(`${0} ${1} ${plain}`, '0 1 [object Object]'); +assert.sameValue(`${0} ${1} ${plain}`, '0 1 [object Object]'); +assert.sameValue(`${0} ${1} ${plain}2`, '0 1 [object Object]2'); +assert.sameValue(`${0} ${1} ${plain}2`, '0 1 [object Object]2'); + +assert.sameValue(`${0} ${1} ${custom}`, '0 1 "own" toString'); +assert.sameValue(`${0} ${1} ${custom}`, '0 1 "own" toString'); +assert.sameValue(`${0} ${1} ${custom}2`, '0 1 "own" toString2'); +assert.sameValue(`${0} ${1} ${custom}2`, '0 1 "own" toString2'); diff --git a/test/language/expressions/template-literal/middle-list-many-expr-primitive.js b/test/language/expressions/template-literal/middle-list-many-expr-primitive.js new file mode 100644 index 0000000000..f123586be3 --- /dev/null +++ b/test/language/expressions/template-literal/middle-list-many-expr-primitive.js @@ -0,0 +1,17 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Primitive value in expression position of TemplateMiddleList +info: > + TemplateMiddleList : TemplateMiddleList TemplateMiddle Expression + + 1. Let rest be the result of evaluating TemplateMiddleList . + 2. ReturnIfAbrupt(rest). + 3. Let middle be the TV of TemplateMiddle as defined in 11.8.6. + 4. Let sub be the result of evaluating Expression. + 5. Let last be ToString(sub). +---*/ + +assert.sameValue(`${0} ${1} ${5} bar`, '0 1 5 bar', 'number value'); +assert.sameValue(`${0} ${1} ${'string'} bar`, '0 1 string bar', 'string value'); diff --git a/test/language/expressions/template-literal/middle-list-many-expr-template.js b/test/language/expressions/template-literal/middle-list-many-expr-template.js new file mode 100644 index 0000000000..6cd92054fb --- /dev/null +++ b/test/language/expressions/template-literal/middle-list-many-expr-template.js @@ -0,0 +1,16 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Template literal in expression position of TemplateMiddleList +info: > + TemplateMiddleList : TemplateMiddleList TemplateMiddle Expression + + 1. Let rest be the result of evaluating TemplateMiddleList . + 2. ReturnIfAbrupt(rest). + 3. Let middle be the TV of TemplateMiddle as defined in 11.8.6. + 4. Let sub be the result of evaluating Expression. + 5. Let last be ToString(sub). +---*/ + +assert.sameValue(`${0} ${1} ${`bar ${5} baz`} qux`, '0 1 bar 5 baz qux'); diff --git a/test/language/expressions/template-literal/middle-list-many-expr-tostr-error.js b/test/language/expressions/template-literal/middle-list-many-expr-tostr-error.js new file mode 100644 index 0000000000..5b0a555050 --- /dev/null +++ b/test/language/expressions/template-literal/middle-list-many-expr-tostr-error.js @@ -0,0 +1,25 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Abrupt completion when converting expression value of TemplateMiddleList +info: > + TemplateMiddleList : TemplateMiddleList TemplateMiddle Expression + + 1. Let rest be the result of evaluating TemplateMiddleList . + 2. ReturnIfAbrupt(rest). + 3. Let middle be the TV of TemplateMiddle as defined in 11.8.6. + 4. Let sub be the result of evaluating Expression. + 5. Let last be ToString(sub). + 6. ReturnIfAbrupt(last). +---*/ + +var obj = { + toString: function() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + `${0} ${1} ${obj}`; +}); diff --git a/test/language/expressions/template-literal/middle-list-one-expr-abrupt.js b/test/language/expressions/template-literal/middle-list-one-expr-abrupt.js new file mode 100644 index 0000000000..9e26b89b0a --- /dev/null +++ b/test/language/expressions/template-literal/middle-list-one-expr-abrupt.js @@ -0,0 +1,17 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Abrupt completion when evaluating expression of TemplateMiddleList +info: > + TemplateMiddleList : TemplateMiddle Expression + + 1. Let head be the TV of TemplateMiddle as defined in 11.8.6. + 2. Let sub be the result of evaluating Expression. + 3. Let middle be ToString(sub). + 4. ReturnIfAbrupt(middle). +---*/ + +assert.throws(Test262Error, function() { + `${0}${function() { throw new Test262Error(); }()}`; +}); diff --git a/test/language/expressions/template-literal/middle-list-one-expr-function.js b/test/language/expressions/template-literal/middle-list-one-expr-function.js new file mode 100644 index 0000000000..d7edd372e3 --- /dev/null +++ b/test/language/expressions/template-literal/middle-list-one-expr-function.js @@ -0,0 +1,16 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Function invocation in expression position of TemplateMiddleList +info: > + TemplateMiddleList : TemplateMiddle Expression + + 1. Let head be the TV of TemplateMiddle as defined in 11.8.6. + 2. Let sub be the result of evaluating Expression. + 3. Let middle be ToString(sub). +---*/ + +function fn() { return 'result'; } + +assert.sameValue(`${0} ${fn()}`, '0 result'); diff --git a/test/language/expressions/template-literal/middle-list-one-expr-member-expr.js b/test/language/expressions/template-literal/middle-list-one-expr-member-expr.js new file mode 100644 index 0000000000..3686d145fd --- /dev/null +++ b/test/language/expressions/template-literal/middle-list-one-expr-member-expr.js @@ -0,0 +1,35 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: MemberExpression in expression position of TemplateMiddleList +info: > + TemplateMiddleList : TemplateMiddle Expression + + 1. Let head be the TV of TemplateMiddle as defined in 11.8.6. + 2. Let sub be the result of evaluating Expression. + 3. Let middle be ToString(sub). + 4. ReturnIfAbrupt(middle). +---*/ + +var object = { + number: 5, + string: 'stringValue' +}; + +assert.sameValue( + `${0} ${object.number} bar`, '0 5 bar', 'number value property' +); +assert.sameValue( + `${0} ${object.string} bar`, '0 stringValue bar', 'string value property' +); +assert.sameValue( + `${0} ${object['string']} bar`, + '0 stringValue bar', + 'string value property (single-quote string dereference)' +); +assert.sameValue( + `${0} ${object["string"]} bar`, + '0 stringValue bar', + 'string value property (double-quote string dereference)' +); diff --git a/test/language/expressions/template-literal/middle-list-one-expr-method.js b/test/language/expressions/template-literal/middle-list-one-expr-method.js new file mode 100644 index 0000000000..024cc8e0d8 --- /dev/null +++ b/test/language/expressions/template-literal/middle-list-one-expr-method.js @@ -0,0 +1,18 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Method invocation in expression position of TemplateMiddleList +info: > + TemplateMiddleList : TemplateMiddle Expression + + 1. Let head be the TV of TemplateMiddle as defined in 11.8.6. + 2. Let sub be the result of evaluating Expression. + 3. Let middle be ToString(sub). + 4. ReturnIfAbrupt(middle). +---*/ +var object = { + fn: function() { return 'result'; } +}; + +assert.sameValue(`${0} ${object.fn()} bar`, '0 result bar'); diff --git a/test/language/expressions/template-literal/middle-list-one-expr-obj.js b/test/language/expressions/template-literal/middle-list-one-expr-obj.js new file mode 100644 index 0000000000..12a11c0b98 --- /dev/null +++ b/test/language/expressions/template-literal/middle-list-one-expr-obj.js @@ -0,0 +1,30 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Object reference in expression position of TemplateMiddleList +info: > + TemplateMiddleList : TemplateMiddle Expression + + 1. Let head be the TV of TemplateMiddle as defined in 11.8.6. + 2. Let sub be the result of evaluating Expression. + 3. Let middle be ToString(sub). + 4. ReturnIfAbrupt(middle). +---*/ + +var plain = {}; +var custom = { + toString: function() { + return '"own" toString'; + } +}; + +assert.sameValue(`${0} ${plain}`, '0 [object Object]'); +assert.sameValue(`${0} ${plain}`, '0 [object Object]'); +assert.sameValue(`${0} ${plain}2`, '0 [object Object]2'); +assert.sameValue(`${0} ${plain}2`, '0 [object Object]2'); + +assert.sameValue(`${0} ${custom}`, '0 "own" toString'); +assert.sameValue(`${0} ${custom}`, '0 "own" toString'); +assert.sameValue(`${0} ${custom}2`, '0 "own" toString2'); +assert.sameValue(`${0} ${custom}2`, '0 "own" toString2'); diff --git a/test/language/expressions/template-literal/middle-list-one-expr-primitive.js b/test/language/expressions/template-literal/middle-list-one-expr-primitive.js new file mode 100644 index 0000000000..1bf8de2600 --- /dev/null +++ b/test/language/expressions/template-literal/middle-list-one-expr-primitive.js @@ -0,0 +1,15 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Primitive value in expression position of TemplateMiddleList +info: > + TemplateMiddleList : TemplateMiddle Expression + + 1. Let head be the TV of TemplateMiddle as defined in 11.8.6. + 2. Let sub be the result of evaluating Expression. + 3. Let middle be ToString(sub). +---*/ + +assert.sameValue(`${0} ${5} bar`, '0 5 bar', 'number value'); +assert.sameValue(`${0} ${'string'} bar`, '0 string bar', 'string value'); diff --git a/test/language/expressions/template-literal/middle-list-one-expr-template.js b/test/language/expressions/template-literal/middle-list-one-expr-template.js new file mode 100644 index 0000000000..d906250e1a --- /dev/null +++ b/test/language/expressions/template-literal/middle-list-one-expr-template.js @@ -0,0 +1,14 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Template literal in expression position of TemplateMiddleList +info: > + TemplateMiddleList : TemplateMiddle Expression + + 1. Let head be the TV of TemplateMiddle as defined in 11.8.6. + 2. Let sub be the result of evaluating Expression. + 3. Let middle be ToString(sub). +---*/ + +assert.sameValue(`${0} ${`bar ${5} baz`} qux`, '0 bar 5 baz qux'); diff --git a/test/language/expressions/template-literal/middle-list-one-expr-tostr-error.js b/test/language/expressions/template-literal/middle-list-one-expr-tostr-error.js new file mode 100644 index 0000000000..6ed334c6f2 --- /dev/null +++ b/test/language/expressions/template-literal/middle-list-one-expr-tostr-error.js @@ -0,0 +1,23 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Abrupt completion when converting expression value of TemplateMiddleList +info: > + TemplateMiddleList : TemplateMiddle Expression + + 1. Let head be the TV of TemplateMiddle as defined in 11.8.6. + 2. Let sub be the result of evaluating Expression. + 3. Let middle be ToString(sub). + 4. ReturnIfAbrupt(middle). +---*/ + +var obj = { + toString: function() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + `${0} ${obj}`; +}); diff --git a/test/language/expressions/template-literal/no-sub.js b/test/language/expressions/template-literal/no-sub.js new file mode 100644 index 0000000000..3bf27aaac8 --- /dev/null +++ b/test/language/expressions/template-literal/no-sub.js @@ -0,0 +1,14 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.8.5 +description: Evaluation of NoSubstitutionTemplate +info: > + 12.2.8.5 Runtime Semantics: Evaluation + TemplateLiteral : NoSubstitutionTemplate + + 1. Return the string value whose code units are the elements of the TV of + NoSubstitutionTemplate as defined in 11.8.6. +---*/ + +assert.sameValue(`NoSubstitutionTemplate`, 'NoSubstitutionTemplate'); diff --git a/test/language/expressions/template-literal/tv-character-escape-sequence.js b/test/language/expressions/template-literal/tv-character-escape-sequence.js new file mode 100644 index 0000000000..8b7f74aeb8 --- /dev/null +++ b/test/language/expressions/template-literal/tv-character-escape-sequence.js @@ -0,0 +1,117 @@ +// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 11.8.6.1 +description: Template values of character escape sequences +info: > + The TV of TemplateCharacter :: \ EscapeSequence is the SV of + EscapeSequence. + The TRV of TemplateCharacter :: \ EscapeSequence is the sequence consisting + of the code unit value 0x005C followed by the code units of TRV of + EscapeSequence. + The TRV of CharacterEscapeSequence :: SingleEscapeCharacter is the TRV of + the SingleEscapeCharacter. + The TRV of CharacterEscapeSequence :: NonEscapeCharacter is the SV of the + NonEscapeCharacter. +---*/ +var calls; + +calls = 0; +(function(s) { + calls++; + assert.sameValue(s[0], "'", "TV of NonEscapeCharacter"); + assert.sameValue(s.raw[0], "\u005C\u0027", "TRV of NonEscapeCharacter"); +})`\'`; +assert.sameValue(calls, 1); + +calls = 0; +(function(s) { + calls++; + assert.sameValue(s[0], "\"", "TV of SingleEscapeCharacter (double quote)"); + assert.sameValue( + s.raw[0], "\u005C\u0022", "TRV of SingleEscapeCharacter (double quote)" + ); +})`\"`; +assert.sameValue(calls, 1); + +calls = 0; +(function(s) { + calls++; + assert.sameValue(s[0], "\\", "TV of SingleEscapeCharacter (backslash)"); + assert.sameValue( + s.raw[0], "\u005C\u005C", "TRV of SingleEscapeCharacter (backslash)" + ); +})`\\`; +assert.sameValue(calls, 1); + +calls = 0; +(function(s) { + calls++; + assert.sameValue(s[0], "\b", "TV of SingleEscapeCharacter (backspace)"); + assert.sameValue( + s.raw[0], "\u005Cb", "TRV of SingleEscapeCharacter (backspace)" + ); +})`\b`; +assert.sameValue(calls, 1); + +calls = 0; +(function(s) { + calls++; + assert.sameValue(s[0], "\f", "TV of SingleEscapeCharacter (form feed)"); + assert.sameValue( + s.raw[0], "\u005Cf", "TRV of SingleEscapeCharacter (form feed)" + ); +})`\f`; +assert.sameValue(calls, 1); + +calls = 0; +(function(s) { + calls++; + assert.sameValue(s[0], "\n", "TV of SingleEscapeCharacter (new line)"); + assert.sameValue( + s.raw[0], "\u005Cn", "TRV of SingleEscapeCharacter (new line)" + ); +})`\n`; +assert.sameValue(calls, 1); + +calls = 0; +(function(s) { + calls++; + assert.sameValue( + s[0], "\r", "TV of SingleEscapeCharacter (carriage return)" + ); + assert.sameValue( + s.raw[0], "\u005Cr", "TRV of SingleEscapeCharacter (carriage return)" + ); +})`\r`; +assert.sameValue(calls, 1); + +calls = 0; +(function(s) { + calls++; + assert.sameValue(s[0], " ", "TV of SingleEscapeCharacter (tab)"); + assert.sameValue(s.raw[0], "\u005Ct", "TRV of SingleEscapeCharacter (tab)"); +})`\t`; +assert.sameValue(calls, 1); + +calls = 0; +(function(s) { + calls++; + assert.sameValue( + s[0], "\v", "TV of SingleEscapeCharacter (line tabulation)" + ); + assert.sameValue( + s.raw[0], "\u005Cv", "TRV of SingleEscapeCharacter (line tabulation)" + ); +})`\v`; +assert.sameValue(calls, 1); + +calls = 0; +(function(s) { + calls++; + assert.sameValue(s[0], "`", "TV of SingleEscapeCharacter (backtick)"); + assert.sameValue( + s.raw[0], "\u005C`", "TRV of SingleEscapeCharacter (backtick)" + ); +})`\``; +assert.sameValue(calls, 1); diff --git a/test/language/expressions/template/template-values/utf16-escape-sequence.js b/test/language/expressions/template-literal/tv-hex-escape-sequence.js similarity index 50% rename from test/language/expressions/template/template-values/utf16-escape-sequence.js rename to test/language/expressions/template-literal/tv-hex-escape-sequence.js index 14fa3b500a..70ab99e2a8 100644 --- a/test/language/expressions/template/template-values/utf16-escape-sequence.js +++ b/test/language/expressions/template-literal/tv-hex-escape-sequence.js @@ -1,8 +1,11 @@ -// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- -es6id: 11.1 -description: > +es6id: 11.8.6.1 +description: Template values of hex escape sequences +info: > + The TV of TemplateCharacter :: \ EscapeSequence is the SV of + EscapeSequence. The SV of UnicodeEscapeSequence :: u{ HexDigits } is the UTF16Encoding (10.1.1) of the MV of HexDigits. The TRV of UnicodeEscapeSequence :: u{ HexDigits } is the sequence @@ -15,15 +18,7 @@ var calls; calls = 0; (function(s) { calls++; - assert.sameValue(s[0], 'abc', '`` sequence template value'); - assert.sameValue(s.raw[0], 'a\\u{62}c', '`` sequence template raw value'); -})`a\u{62}c`; -assert.sameValue(calls, 1); - -calls = 0; -(function(s) { - calls++; - assert.sameValue(s[0], 'abc', 'HexEscapeSequence template value'); - assert.sameValue(s.raw[0], 'a\\u{000062}c', 'HexEscapeSequence template raw value'); -})`a\u{000062}c`; + assert.sameValue(s[0], 'A', 'TV'); + assert.sameValue(s.raw[0], '\\x41', 'TRV'); +})`\x41`; assert.sameValue(calls, 1); diff --git a/test/language/expressions/template/template-values/line-continuation.js b/test/language/expressions/template-literal/tv-line-continuation.js similarity index 70% rename from test/language/expressions/template/template-values/line-continuation.js rename to test/language/expressions/template-literal/tv-line-continuation.js index c19fe0c53b..14f0f1384b 100644 --- a/test/language/expressions/template/template-values/line-continuation.js +++ b/test/language/expressions/template-literal/tv-line-continuation.js @@ -1,17 +1,22 @@ // Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- -es6id: 11.8.6 -description: > +es6id: 11.8.6.1 +description: Template values of line continuations +info: > + The TV of LineContinuation :: \ LineTerminatorSequence is the empty code + unit sequence. The TRV of LineContinuation :: \ LineTerminatorSequence is the sequence consisting of the code unit value 0x005C followed by the code units of TRV of LineTerminatorSequence. ---*/ + var calls; calls = 0; (function(cs) { calls++; + assert.sameValue(cs[0], '', 'Line Feed and Carriage Return'); assert.sameValue( cs.raw[0], '\u005C\n\u005C\n\u005C\n', 'Line Feed and Carriage Return' ); @@ -23,6 +28,7 @@ assert.sameValue(calls, 1); calls = 0; (function(cs) { calls++; + assert.sameValue(cs[0], '', 'Line Separator'); assert.sameValue(cs.raw[0], '\\\u2028', 'Line Separator'); })`\
` assert.sameValue(calls, 1); @@ -30,6 +36,7 @@ assert.sameValue(calls, 1); calls = 0; (function(cs) { calls++; + assert.sameValue(cs[0], '', 'Paragraph Separater'); assert.sameValue(cs.raw[0], '\\\u2029', 'Paragraph Separator'); })`\
` assert.sameValue(calls, 1); diff --git a/test/language/expressions/template/template-values/line-terminator-sequence.js b/test/language/expressions/template-literal/tv-line-terminator-sequence.js similarity index 68% rename from test/language/expressions/template/template-values/line-terminator-sequence.js rename to test/language/expressions/template-literal/tv-line-terminator-sequence.js index e9ecd41336..f3275ca15b 100644 --- a/test/language/expressions/template/template-values/line-terminator-sequence.js +++ b/test/language/expressions/template-literal/tv-line-terminator-sequence.js @@ -1,8 +1,11 @@ -// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- -es6id: 11.8.6 -description: > +es6id: 11.8.6.1 +description: Template values of line terminator sequences +info: > + The TV of TemplateCharacter :: LineTerminatorSequence is the TRV of + LineTerminatorSequence. The TRV of LineTerminatorSequence :: is the code unit value 0x000A. The TRV of LineTerminatorSequence :: is the code unit value 0x000A. The TRV of LineTerminatorSequence :: is the code unit value 0x2028. @@ -10,11 +13,14 @@ description: > The TRV of LineTerminatorSequence :: is the sequence consisting of the code unit value 0x000A. ---*/ + + var calls; calls = 0; (function(s) { calls++; + assert.sameValue(s[0], '\n\n\n', 'Line Feed and Carriage Return'); assert.sameValue(s.raw[0], '\n\n\n', 'Line Feed and Carriage Return'); })` @@ -24,6 +30,7 @@ assert.sameValue(calls, 1); calls = 0; (function(cs) { calls++; + assert.sameValue(cs[0], '\u2028', 'Line Separator'); assert.sameValue(cs.raw[0], '\u2028', 'Line Separator'); })`
` assert.sameValue(calls, 1); @@ -31,6 +38,7 @@ assert.sameValue(calls, 1); calls = 0; (function(cs) { calls++; + assert.sameValue(cs[0], '\u2029', 'Paragraph Separator'); assert.sameValue(cs.raw[0], '\u2029', 'Paragraph Separator'); })`
` assert.sameValue(calls, 1); diff --git a/test/language/expressions/template/template-values/no-substitution.js b/test/language/expressions/template-literal/tv-no-substitution.js similarity index 71% rename from test/language/expressions/template/template-values/no-substitution.js rename to test/language/expressions/template-literal/tv-no-substitution.js index 6812185834..8d285bd2ef 100644 --- a/test/language/expressions/template/template-values/no-substitution.js +++ b/test/language/expressions/template-literal/tv-no-substitution.js @@ -1,12 +1,15 @@ // Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- -es6id: 11.8.6 -description: > +es6id: 11.8.6.1 +description: Template values of templates without substitution patterns +info: > The TV and TRV of NoSubstitutionTemplate :: `` is the empty code unit sequence. The TV of NoSubstitutionTemplate :: ` TemplateCharacters ` is the TV of TemplateCharacters. + The TRV of NoSubstitutionTemplate :: ` TemplateCharacters ` is the TRV of + TemplateCharacters. ---*/ var calls; @@ -23,5 +26,6 @@ calls = 0; (function(s) { calls++; assert.sameValue(s[0], 'foo', 'Template value (with content)'); + assert.sameValue(s.raw[0], 'foo', 'Template raw value (with content)'); })`foo`; assert.sameValue(calls, 1); diff --git a/test/language/expressions/template/template-values/null-character-escape-sequence.js b/test/language/expressions/template-literal/tv-null-character-escape-sequence.js similarity index 70% rename from test/language/expressions/template/template-values/null-character-escape-sequence.js rename to test/language/expressions/template-literal/tv-null-character-escape-sequence.js index c7eadf0365..caa219a130 100644 Binary files a/test/language/expressions/template/template-values/null-character-escape-sequence.js and b/test/language/expressions/template-literal/tv-null-character-escape-sequence.js differ diff --git a/test/language/expressions/template-literal/tv-template-character.js b/test/language/expressions/template-literal/tv-template-character.js new file mode 100644 index 0000000000..fef3e5fd4b --- /dev/null +++ b/test/language/expressions/template-literal/tv-template-character.js @@ -0,0 +1,38 @@ +// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 11.8.6.1 +description: Template values of single characters +info: > + The TV of TemplateCharacters :: TemplateCharacter is the TV of + TemplateCharacter. + The TV of TemplateCharacter :: SourceCharacter but not one of ` or \ or $ + or LineTerminator is the UTF16Encoding (10.1.1) of the code point value of + SourceCharacter. + The TV of TemplateCharacter :: $ is the code unit value 0x0024. + + The TRV of TemplateCharacters :: TemplateCharacter is the TRV of + TemplateCharacter. + The TRV of TemplateCharacter :: SourceCharacter but not one of ` or \ or $ + or LineTerminator is the UTF16Encoding (10.1.1) of the code point value of + SourceCharacter. + The TRV of TemplateCharacter :: $ is the code unit value 0x0024. +---*/ + +var calls; + +calls = 0; +(function(s) { + calls++; + assert.sameValue(s[0], 'a', '`a` character TV'); + assert.sameValue(s.raw[0], 'a', '`a` character TRV'); +})`a`; +assert.sameValue(calls, 1); + +calls = 0; +(function(s) { + calls++; + assert.sameValue(s[0], '$', '`$` character TV'); + assert.sameValue(s.raw[0], '$', '`$` character TRV'); +})`$`; +assert.sameValue(calls, 1); diff --git a/test/language/expressions/template-literal/tv-template-characters.js b/test/language/expressions/template-literal/tv-template-characters.js new file mode 100644 index 0000000000..9e32828255 --- /dev/null +++ b/test/language/expressions/template-literal/tv-template-characters.js @@ -0,0 +1,23 @@ +// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 11.8.6.1 +description: Template values of multiple template characters +info: > + The TV of TemplateCharacters :: TemplateCharacter TemplateCharacters is a + sequence consisting of the code units in the TV of TemplateCharacter + followed by all the code units in the TV of TemplateCharacters in order. + The TRV of TemplateCharacters :: TemplateCharacter TemplateCharacters is a + sequence consisting of the code units in the TRV of TemplateCharacter + followed by all the code units in the TRV of TemplateCharacters, in order. +---*/ + +var calls = 0; + +(function(s) { + calls++; + assert.sameValue(s.raw[0], 'test'); +})`test`; + +assert.sameValue(calls, 1); +assert.sameValue(`test`, 'test'); diff --git a/test/language/expressions/template/template-values/template-head.js b/test/language/expressions/template-literal/tv-template-head.js similarity index 91% rename from test/language/expressions/template/template-values/template-head.js rename to test/language/expressions/template-literal/tv-template-head.js index b73dd3b563..895a1f5c63 100644 --- a/test/language/expressions/template/template-values/template-head.js +++ b/test/language/expressions/template-literal/tv-template-head.js @@ -1,8 +1,9 @@ // Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- -es6id: 11.8.6 -description: > +es6id: 11.8.6.1 +description: Template values of the template head pattern +info: > The TV and TRV of TemplateHead :: `${ is the empty code unit sequence. The TV of TemplateHead :: ` TemplateCharacters ${ is the TV of TemplateCharacters. diff --git a/test/language/expressions/template/template-values/template-middle.js b/test/language/expressions/template-literal/tv-template-middle.js similarity index 86% rename from test/language/expressions/template/template-values/template-middle.js rename to test/language/expressions/template-literal/tv-template-middle.js index db100e9239..ca6cb0ca8a 100644 --- a/test/language/expressions/template/template-values/template-middle.js +++ b/test/language/expressions/template-literal/tv-template-middle.js @@ -1,11 +1,10 @@ // Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- -es6id: 11.8.6 -description: > +es6id: 11.8.6.1 +description: Template values of the template middle pattern +info: > The TV and TRV of TemplateMiddle :: }${ is the empty code unit sequence. - The TV of TemplateMiddle :: } TemplateCharacters ${ is the TV of - TemplateCharacters. The TRV of TemplateMiddle :: } TemplateCharacters ${ is the TRV of TemplateCharacters. ---*/ diff --git a/test/language/expressions/template/template-values/template-tail.js b/test/language/expressions/template-literal/tv-template-tail.js similarity index 91% rename from test/language/expressions/template/template-values/template-tail.js rename to test/language/expressions/template-literal/tv-template-tail.js index 541883eedb..941cadf38d 100644 --- a/test/language/expressions/template/template-values/template-tail.js +++ b/test/language/expressions/template-literal/tv-template-tail.js @@ -1,8 +1,9 @@ // Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- -es6id: 11.8.6 -description: > +es6id: 11.8.6.1 +description: Template values of the template tail pattern +info: > The TV and TRV of TemplateTail :: }` is the empty code unit sequence. The TV of TemplateTail :: } TemplateCharacters ` is the TV of TemplateCharacters. diff --git a/test/language/expressions/template-literal/tv-utf16-escape-sequence.js b/test/language/expressions/template-literal/tv-utf16-escape-sequence.js new file mode 100644 index 0000000000..ba4ffc830f --- /dev/null +++ b/test/language/expressions/template-literal/tv-utf16-escape-sequence.js @@ -0,0 +1,50 @@ +// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 11.8.6.1 +description: Template values of UTF-16 escape sequences +info: > + The TV of TemplateCharacter :: \ EscapeSequence is the SV of + EscapeSequence. + The SV of UnicodeEscapeSequence :: u{ HexDigits } is the UTF16Encoding + (10.1.1) of the MV of HexDigits. + The TRV of UnicodeEscapeSequence :: u Hex4Digits is the sequence consisting + of code unit value 0x0075 followed by TRV of Hex4Digits. + The TRV of UnicodeEscapeSequence :: u{ HexDigits } is the sequence + consisting of code unit value 0x0075 followed by code unit value 0x007B + followed by TRV of HexDigits followed by code unit value 0x007D. +---*/ + +var calls; + +calls = 0; +(function(s) { + calls++; + assert.sameValue(s[0], 'b', 'u Hex4Digits template value'); + assert.sameValue(s.raw[0], '\\u0062', 'u Hex4Digits template raw value'); +})`\u0062`; +assert.sameValue(calls, 1); + +calls = 0; +(function(s) { + calls++; + assert.sameValue(s[0], 'b', 'u{ HexDigits } template value'); + assert.sameValue( + s.raw[0], '\\u{62}', 'u{ Hex4Digits } template raw value' + ); +})`\u{62}`; +assert.sameValue(calls, 1); + +calls = 0; +(function(s) { + calls++; + assert.sameValue( + s[0], 'b', 'u{ HexDigits } template value (with leading zeros)' + ); + assert.sameValue( + s.raw[0], + '\\u{000062}', + 'u{ HexDigits } template raw value (with leading zeros)' + ); +})`\u{000062}`; +assert.sameValue(calls, 1); diff --git a/test/language/expressions/template-literal/tv-zwnbsp.js b/test/language/expressions/template-literal/tv-zwnbsp.js new file mode 100644 index 0000000000..2197874b81 --- /dev/null +++ b/test/language/expressions/template-literal/tv-zwnbsp.js @@ -0,0 +1,33 @@ +// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 11.1.8.6.1 +description: Template values of the zero width no-break space character +info: > + The zero width no-break space format-control character may be used within + template literals. +---*/ + +var callCount; + +callCount = 0; +(function(s) { + callCount++; + assert.sameValue( + s[0], 'test', 'TV (specified via unicode escape sequence)' + ); + assert.sameValue( + s.raw[0], '\\uFEFFtest', 'TV (specified via unicode escape sequence)' + ); +})`\uFEFFtest`; +assert.sameValue(callCount, 1); + +callCount = 0; +(function(s) { + callCount++; + assert.sameValue(s[0], 'test', 'TV (specified via literal character)'); + assert.sameValue( + s.raw[0], 'test', 'TV (specified via literal character)' + ); +})`test`; +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/template/function-invocation.js b/test/language/expressions/template/function-invocation.js deleted file mode 100644 index 38094e74c6..0000000000 --- a/test/language/expressions/template/function-invocation.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -es6id: 12.2.8 -description: > - Expressions should be evaluated and converted to Strings according to the - ToString abstract operation. ----*/ -function fn() { return 'result'; } - -assert.sameValue(`foo ${fn()} bar`, 'foo result bar'); diff --git a/test/language/expressions/template/method-invocation.js b/test/language/expressions/template/method-invocation.js deleted file mode 100644 index 6f9a9ed077..0000000000 --- a/test/language/expressions/template/method-invocation.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -es6id: 12.2.8 -description: > - Expressions should be evaluated and converted to Strings according to the - ToString abstract operation. ----*/ -var object = { - fn: function() { return 'result'; } -}; - -assert.sameValue(`foo ${object.fn()} bar`, 'foo result bar'); diff --git a/test/language/expressions/template/object-deference.js b/test/language/expressions/template/object-deference.js deleted file mode 100644 index 8ba043de3a..0000000000 --- a/test/language/expressions/template/object-deference.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -es6id: 12.2.8 -description: > - Expressions should be evaluated and converted to Strings according to the - ToString abstract operation. ----*/ -var object = { - number: 5, - string: 'stringValue' -}; - -assert.sameValue( - `foo ${object.number} bar`, 'foo 5 bar', 'number value property' -); -assert.sameValue( - `foo ${object.string} bar`, 'foo stringValue bar', 'string value property' -); diff --git a/test/language/expressions/template/primitives.js b/test/language/expressions/template/primitives.js deleted file mode 100644 index 44a1396e17..0000000000 --- a/test/language/expressions/template/primitives.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -es6id: 12.2.8 -description: > - Expressions should be evaluated and converted to Strings according to the - ToString abstract operation. ----*/ - -assert.sameValue(`foo ${5} bar`, 'foo 5 bar', 'number value'); -assert.sameValue(`foo ${'string'} bar`, 'foo string bar', 'string value'); diff --git a/test/language/expressions/template/template-literal.js b/test/language/expressions/template/template-literal.js deleted file mode 100644 index a3b06e45c1..0000000000 --- a/test/language/expressions/template/template-literal.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -es6id: 12.2.8 -description: > - Expressions should be evaluated and converted to Strings according to the - ToString abstract operation. ----*/ -assert.sameValue(`foo ${`bar ${5} baz`} qux`, 'foo bar 5 baz qux'); diff --git a/test/language/expressions/template/template-values/character-escape-sequence.js b/test/language/expressions/template/template-values/character-escape-sequence.js deleted file mode 100644 index cf3fecbd97..0000000000 --- a/test/language/expressions/template/template-values/character-escape-sequence.js +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -es6id: 11.8.6 -description: > - The TRV of CharacterEscapeSequence :: SingleEscapeCharacter is the TRV of - the SingleEscapeCharacter. - The TRV of CharacterEscapeSequence :: NonEscapeCharacter is the CV of the - NonEscapeCharacter. ----*/ -var calls; - -calls = 0; -(function(s) { - calls++; - assert.sameValue(s.raw[0], "\u005C\u0027"); -})`\'`; -assert.sameValue(calls, 1); - -calls = 0; -(function(s) { - calls++; - assert.sameValue(s.raw[0], "\u005C\u0022"); -})`\"`; -assert.sameValue(calls, 1); - -calls = 0; -(function(s) { - calls++; - assert.sameValue(s.raw[0], "\u005C\u005C"); -})`\\`; -assert.sameValue(calls, 1); - -calls = 0; -(function(s) { - calls++; - assert.sameValue(s.raw[0], "\u005Cb"); -})`\b`; -assert.sameValue(calls, 1); - -calls = 0; -(function(s) { - calls++; - assert.sameValue(s.raw[0], "\u005Cf"); -})`\f`; -assert.sameValue(calls, 1); - -calls = 0; -(function(s) { - calls++; - assert.sameValue(s.raw[0], "\u005Cn"); -})`\n`; -assert.sameValue(calls, 1); - -calls = 0; -(function(s) { - calls++; - assert.sameValue(s.raw[0], "\u005Cr"); -})`\r`; -assert.sameValue(calls, 1); - -calls = 0; -(function(s) { - calls++; - assert.sameValue(s.raw[0], "\u005Ct"); -})`\t`; -assert.sameValue(calls, 1); - -calls = 0; -(function(s) { - calls++; - assert.sameValue(s.raw[0], "\u005Cv"); -})`\v`; -assert.sameValue(calls, 1); - -calls = 0; -(function(s) { - calls++; - assert.sameValue(s.raw[0], "\u005C`"); -})`\``; -assert.sameValue(calls, 1); - -calls = 0; -(function(s) { - calls++; - assert.sameValue(s.raw[0], "\u005Cz"); -})`\z`; -assert.sameValue(calls, 1); diff --git a/test/language/expressions/template/template-values/escape-sequence.js b/test/language/expressions/template/template-values/escape-sequence.js deleted file mode 100644 index e3e0ee8275..0000000000 Binary files a/test/language/expressions/template/template-values/escape-sequence.js and /dev/null differ diff --git a/test/language/expressions/template/template-values/multi-line.js b/test/language/expressions/template/template-values/multi-line.js deleted file mode 100644 index cafb05179a..0000000000 --- a/test/language/expressions/template/template-values/multi-line.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -es6id: 11.8.6 -description: > - The TV of TemplateCharacter :: \ EscapeSequence is the SV of - EscapeSequence. ----*/ -assert.sameValue(`foo - bar - baz`, 'foo\n bar\n baz'); - -assert.sameValue(eval('`foo\r\n bar\r baz`'), 'foo\n bar\n baz'); diff --git a/test/language/expressions/template/template-values/template-character.js b/test/language/expressions/template/template-values/template-character.js deleted file mode 100644 index 7b2e0aae6b..0000000000 --- a/test/language/expressions/template/template-values/template-character.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -es6id: 11.8.6 -description: > - The TV of TemplateCharacter :: $ is the code unit value 0x0024. - The TV of TemplateCharacter :: \ EscapeSequence is the CV of - EscapeSequence. - The TV of TemplateCharacter :: LineContinuation is the TV of - LineContinuation. The TV of LineContinuation :: \ LineTerminatorSequence is - the empty code unit sequence. - The TRV of TemplateCharacter :: $ is the code unit value 0x0024. ----*/ - -var calls; - -assert.sameValue(`\uc548\uB155`, "안녕"); -assert.sameValue(`\xff`, "\xff"); -assert.sameValue(`\n`, "\n"); -assert.sameValue(`\ -`, ''); - -calls = 0; -(function(s) { - calls++; - assert.sameValue(s[0], '$', '`$` character template value'); - assert.sameValue(s.raw[0], '$', '`$` character template raw value'); -})`$`; -assert.sameValue(calls, 1); diff --git a/test/language/expressions/template/template-values/template-characters.js b/test/language/expressions/template/template-values/template-characters.js deleted file mode 100644 index 8d1b7fb357..0000000000 --- a/test/language/expressions/template/template-values/template-characters.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -es6id: 11.8.6 -description: > - The TV of TemplateCharacters :: TemplateCharacter is the TV of - TemplateCharacter. - The TV of NoSubstitutionTemplate :: ` TemplateCharacters ` is the TV of - TemplateCharacters. - The TRV of TemplateCharacters :: TemplateCharacter is the TRV of - TemplateCharacter. ----*/ - -var calls; - -calls = 0; -(function(s) { - calls++; - assert.sameValue(s[0], 'f', 'TemplateCharacters template value'); - assert.sameValue(s.raw[0], 'f', 'TemplateCharacters template raw value'); -})`f`; -assert.sameValue(calls, 1); - -assert.sameValue(`test`, 'test', 'TemplateCharacters template value'); diff --git a/test/language/expressions/template/template-values/zwnbsp.js b/test/language/expressions/template/template-values/zwnbsp.js deleted file mode 100644 index f4d095dc99..0000000000 --- a/test/language/expressions/template/template-values/zwnbsp.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (C) Copyright 2014 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -es6id: 11.1 -description: > - The zero width no-break space format-control character may be used within - template literals. ----*/ - -assert.sameValue( - `\uFEFFtest`, 'test', 'Specified via unicode escape sequence' -); -assert.sameValue( - `test`, 'test', 'Specified via literal character' -);