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 c233db3b86497050501498450cf492205ad450da..aa09319aa13ac8e42a0f81aae118a436f3f2053a 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 4fe47eabc127fd002b62506fb65b7a3c0c4d8a1c..4a8cdb698623cc8a3776dce562fc981d90929dcf 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 88495e350406a459443b3874d8946d0781282368..e74ba4601ce93d96e99b38797965c8f4e5a0dc59 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 98bb3568ec4461c490beb9754c94d5b528c7857f..252736f504dead0e323f5c902f67de4d328970e5 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 30afbe942604d9315b8b0d221464efca21c04ddd..60e2eb23d5f72f1e0ce2217ff1f2513c34d1cf39 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 a83534482068c0c67f7ed284cbdbffb8bfa2a715..383fc4f593317313cff15aaa670c607947ff8595 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 f262e55c8de335f3a70be8f3a2bcdeebba4ef172..511186f2184cd292d5188a85848f2abb59aff77c 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 dc844481f262b73bcf1d7a2919962114d7326dfc..3e09fbd93764a15519f8677aff84e0e9b4190425 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 0000000000000000000000000000000000000000..8c46b4b4db5d24716183e5902783650975df775f --- /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 0000000000000000000000000000000000000000..5ca66f999ab1c744487592e2634e7890bf7b07cd --- /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 0000000000000000000000000000000000000000..d90aa4616783db12caa5d68e54f43381f50d55fd --- /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 ffd67875b2efca4e08ccf745ae46ecbdae3131dd..866efa19950529e22873802e2d27492a7133696b 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 818a9e50c61d7a46d6002153bbfc2c4718b6ae08..8575e6e64d1c8878227ae42926c442531efc9a0b 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 3b489f2938492c1315621f8236a391556c921781..d338fa5d08116983c9193068984aee924315fe0f 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 2f5cb7b309d30b63d196f4f30285faa0e30f8cb8..9853d228383573a443283cecbacc57d3fc7b18d7 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 15f5b092d2785409cc20a00c2308d204f4ccbf06..b4286e1467609e17dc90d26463c8a1a6a7831d28 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 b707f6d2c2fbb0700b1adffbb3d958ae0c01de10..45c5bc664f99e0c3a90775ff7a4f79310755c9a9 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 49403e12d836c3d17e68a73cc8ae83e8fbe81d3f..e3c07bf7bb69bbe119b6a6ff532af91bbb29a5ce 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 56a7611d88d70f6a2772be6fb7a86ffa1fd5250b..baa087389674a77b64ffb72fc989333797fc41fd 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 4a228da5320fdd82a0e4be806d5939e7bd0b16bf..79a1826c9ec8de0b1fba978862ea88c0a2395575 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 0000000000000000000000000000000000000000..33c17272aa8e152286cd41bc961d27db964410b9 --- /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 0000000000000000000000000000000000000000..6d933fe5b0ed0bbb483e0afd97fa43174a512a06 --- /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 0000000000000000000000000000000000000000..65aea5ae7687b3f7d99bc36dfbb0d2a313fc7f5e --- /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 0000000000000000000000000000000000000000..40788c3db777397e0b36e1cd3f1f364fb6a4805e --- /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 59a40268b7554ff79c21bd8692533d6e48297250..3cd21ad00d8eb1da8ac19fe9df593c0dcd79406e 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 0000000000000000000000000000000000000000..4774eacd8e1955108d11ee820ad36cfe29e7622b --- /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 0000000000000000000000000000000000000000..04e6beeaef66dd948fc74e930c50a7f876e621b3 --- /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 0000000000000000000000000000000000000000..d3534ecbacd2d6f78fa7074acb79d4d8f543672c --- /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 0000000000000000000000000000000000000000..41ec352c3ed8cb359045e439d99d79d566ce805a --- /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 0000000000000000000000000000000000000000..3ed6abe6ee17fac2b3d8fc4ee2f8ad9ab8e20961 --- /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 0000000000000000000000000000000000000000..fa01c95cec203dacb1d93007bea4ed6597c717e8 --- /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 0000000000000000000000000000000000000000..053518dd0a55dd3a580b119d0e66e22ac0b2d84a --- /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 0000000000000000000000000000000000000000..7580a0a03b7145b188e830e6f2f99c7a578ba002 --- /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 0000000000000000000000000000000000000000..f123586be3019fcf61c3a3a8245646834132eb9a --- /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 0000000000000000000000000000000000000000..6cd92054fbe0f0e2eabda99f85850e37ebcc8d0a --- /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 0000000000000000000000000000000000000000..5b0a555050ac3e67d1f30fb31fc696d4a6aaeeea --- /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 0000000000000000000000000000000000000000..9e26b89b0a79697a671a59019830fbd1925da704 --- /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 0000000000000000000000000000000000000000..d7edd372e33fceb44341e56bd34408f71b3bfc22 --- /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 0000000000000000000000000000000000000000..3686d145fdeb3e1312ddba41f5cf73618e2c79ab --- /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 0000000000000000000000000000000000000000..024cc8e0d8e72af26e295196cd7a04e4513a9fb0 --- /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 0000000000000000000000000000000000000000..12a11c0b98bdb18d3e7a3fbbe78d25267b813cd1 --- /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 0000000000000000000000000000000000000000..1bf8de26005055f37c836a05832e9aff15dea54c --- /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 0000000000000000000000000000000000000000..d906250e1aa6b83459ca8067664d3a3c96e5101d --- /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 0000000000000000000000000000000000000000..6ed334c6f2a27f14d8c1592209c8e17f0daaf0d4 --- /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 0000000000000000000000000000000000000000..3bf27aaac8abfe3466d2dee3ed6e779cc6d02276 --- /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 0000000000000000000000000000000000000000..8b7f74aeb824fd6eedb76781a13f65dbf42125f3 --- /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 14fa3b500a9288c09e4231993eaeb70a23dcf2e2..70ab99e2a8243264a6ff610c330cfaf1f62d5689 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 c19fe0c53b4db4182ae00f6e080f39aeca67dd40..14f0f1384b13699677732dc92f2804c27a30deb5 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 e9ecd413363e584d7398ac7d5e114a95350701d8..f3275ca15bc228670a85d88e888939e3012d3421 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 :: <LF> is the code unit value 0x000A. The TRV of LineTerminatorSequence :: <CR> is the code unit value 0x000A. The TRV of LineTerminatorSequence :: <LS> is the code unit value 0x2028. @@ -10,11 +13,14 @@ description: > The TRV of LineTerminatorSequence :: <CR><LF> 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 68121858346274df4611fa2b118b79eef362a9ac..8d285bd2ef4c6fb50aee346dd425a07c18c69e2e 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 c7eadf0365e3b306a42f96ac69786673a9a1be7a..caa219a13082262b7c120a67a78a1e44733c354c 100644 --- a/test/language/expressions/template/template-values/null-character-escape-sequence.js +++ b/test/language/expressions/template-literal/tv-null-character-escape-sequence.js @@ -1,17 +1,19 @@ // 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 null character escape sequence +info: > The TV of TemplateCharacter :: \ EscapeSequence is the SV of EscapeSequence. The TRV of EscapeSequence :: 0 is the code unit value 0x0030. ---*/ + var calls = 0; (function(s) { calls++; - assert.sameValue(s[0], '�', '"Cookied" value'); - assert.sameValue(s.raw[0], '\\0', '"Raw" value'); + assert.sameValue(s[0], '�'); + assert.sameValue(s.raw[0], '\\0'); })`\0`; assert.sameValue(calls, 1); 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 0000000000000000000000000000000000000000..fef3e5fd4bfb7f5b9ebdcad5cfd6e0e542434ed8 --- /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 0000000000000000000000000000000000000000..9e328282550b3ed47367af9c3e13257c1fab83d0 --- /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 b73dd3b5630706e3133d4dcab9c66accaee2df9d..895a1f5c63aab50b924112b0ce93a7e09816de06 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 db100e923939818b0aee85ee8761bae06923e6cb..ca6cb0ca8ac62488aea2c942f47ad0cf2439203d 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 541883eedb35b1c49e23dfa77558b8d702adcd0d..941cadf38d305f16087b2238534fea2505f120a3 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 0000000000000000000000000000000000000000..ba4ffc830f5be85d44f587ed09d2dea2d400994d --- /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 0000000000000000000000000000000000000000..2197874b81ce40932038f65d6bf7863248ee9473 --- /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 38094e74c63f7a89124f2430a64ceb3ee0b92516..0000000000000000000000000000000000000000 --- 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 6f9a9ed077c5b0e14283525213cf663f2f4379aa..0000000000000000000000000000000000000000 --- 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 8ba043de3aaf178aca2de031407e4d0406443beb..0000000000000000000000000000000000000000 --- 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 44a1396e17c44882b8726a0ed5d432a338bed1e4..0000000000000000000000000000000000000000 --- 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 a3b06e45c170a1d0fd3a1dc24a3ceb7b6120895b..0000000000000000000000000000000000000000 --- 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 cf3fecbd97de8e6f4bfb8bfcadc255851be1c59e..0000000000000000000000000000000000000000 --- 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 e3e0ee8275975501cfc80f276d30c15cadad8e25..0000000000000000000000000000000000000000 --- a/test/language/expressions/template/template-values/escape-sequence.js +++ /dev/null @@ -1,39 +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. - The TRV of EscapeSequence :: 0 is the code unit value 0x0030. - The TRV of EscapeSequence :: HexEscapeSequence is the TRV of the - HexEscapeSequence. - The TRV of EscapeSequence :: UnicodeEscapeSequence is the TRV of the - UnicodeEscapeSequence. ----*/ -var calls; - -calls = 0; -(function(s) { - calls++; - assert.sameValue(s[0], '�', '`\\0` sequence template value'); - assert.sameValue(s.raw[0], '\\0', '`\\0` sequence template raw value'); -})`\0`; -assert.sameValue(calls, 1); - -calls = 0; -(function(s) { - calls++; - assert.sameValue(s[0], 'ÿ', 'HexEscapeSequence template value'); - assert.sameValue(s.raw[0], '\\xff', 'HexEscapeSequence template raw value'); -})`\xff`; -assert.sameValue(calls, 1); - -calls = 0; -(function(s) { - calls++; - assert.sameValue( - s.raw[0], '\\uc548', 'UnicodeEscapeSequence template raw value' - ); -})`\uc548`; -assert.sameValue(calls, 1); 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 cafb05179a1ee77322766a1815b9f6441cf7c2dd..0000000000000000000000000000000000000000 --- 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 7b2e0aae6b3b4dda7982f3ce5b2643c31d3a43d7..0000000000000000000000000000000000000000 --- 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 8d1b7fb35765bef1165ab396d396ba8ab9401c93..0000000000000000000000000000000000000000 --- 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 f4d095dc990ff10e574a27e6925a6efce63b222e..0000000000000000000000000000000000000000 --- 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' -);