| Index: test/mjsunit/harmony/template-escapes.js
|
| diff --git a/test/mjsunit/harmony/template-escapes.js b/test/mjsunit/harmony/template-escapes.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..fcaf8ac5bfcfa79e361852c144cca13139317959
|
| --- /dev/null
|
| +++ b/test/mjsunit/harmony/template-escapes.js
|
| @@ -0,0 +1,785 @@
|
| +// Copyright 2016 the V8 project authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +// Flags: --harmony-template-escapes
|
| +
|
| +function check({cooked, raw, exprs}) {
|
| + return function(strs, ...args) {
|
| + assertArrayEquals(cooked, strs);
|
| + assertArrayEquals(raw, strs.raw);
|
| + assertArrayEquals(exprs, args);
|
| + };
|
| +}
|
| +
|
| +// clang-format off
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + '\\01'
|
| + ],
|
| + 'exprs': []
|
| +})`\01`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + '\\01',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`\01${0}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\01'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`left${0}\01`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\01',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0,
|
| + 1
|
| + ]
|
| +})`left${0}\01${1}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + '\\1'
|
| + ],
|
| + 'exprs': []
|
| +})`\1`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + '\\1',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`\1${0}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\1'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`left${0}\1`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\1',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0,
|
| + 1
|
| + ]
|
| +})`left${0}\1${1}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + '\\xg'
|
| + ],
|
| + 'exprs': []
|
| +})`\xg`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + '\\xg',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`\xg${0}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\xg'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`left${0}\xg`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\xg',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0,
|
| + 1
|
| + ]
|
| +})`left${0}\xg${1}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + '\\xAg'
|
| + ],
|
| + 'exprs': []
|
| +})`\xAg`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + '\\xAg',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`\xAg${0}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\xAg'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`left${0}\xAg`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\xAg',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0,
|
| + 1
|
| + ]
|
| +})`left${0}\xAg${1}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + '\\u0'
|
| + ],
|
| + 'exprs': []
|
| +})`\u0`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + '\\u0',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`\u0${0}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\u0'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`left${0}\u0`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\u0',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0,
|
| + 1
|
| + ]
|
| +})`left${0}\u0${1}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + '\\u0g'
|
| + ],
|
| + 'exprs': []
|
| +})`\u0g`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + '\\u0g',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`\u0g${0}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\u0g'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`left${0}\u0g`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\u0g',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0,
|
| + 1
|
| + ]
|
| +})`left${0}\u0g${1}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + '\\u00g'
|
| + ],
|
| + 'exprs': []
|
| +})`\u00g`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + '\\u00g',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`\u00g${0}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\u00g'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`left${0}\u00g`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\u00g',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0,
|
| + 1
|
| + ]
|
| +})`left${0}\u00g${1}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + '\\u000g'
|
| + ],
|
| + 'exprs': []
|
| +})`\u000g`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + '\\u000g',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`\u000g${0}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\u000g'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`left${0}\u000g`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\u000g',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0,
|
| + 1
|
| + ]
|
| +})`left${0}\u000g${1}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + '\\u{}'
|
| + ],
|
| + 'exprs': []
|
| +})`\u{}`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + '\\u{}',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`\u{}${0}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\u{}'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`left${0}\u{}`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\u{}',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0,
|
| + 1
|
| + ]
|
| +})`left${0}\u{}${1}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + '\\u{-0}'
|
| + ],
|
| + 'exprs': []
|
| +})`\u{-0}`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + '\\u{-0}',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`\u{-0}${0}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\u{-0}'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`left${0}\u{-0}`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\u{-0}',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0,
|
| + 1
|
| + ]
|
| +})`left${0}\u{-0}${1}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + '\\u{g}'
|
| + ],
|
| + 'exprs': []
|
| +})`\u{g}`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + '\\u{g}',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`\u{g}${0}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\u{g}'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`left${0}\u{g}`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\u{g}',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0,
|
| + 1
|
| + ]
|
| +})`left${0}\u{g}${1}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + '\\u{0'
|
| + ],
|
| + 'exprs': []
|
| +})`\u{0`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + '\\u{0',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`\u{0${0}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\u{0'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`left${0}\u{0`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\u{0',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0,
|
| + 1
|
| + ]
|
| +})`left${0}\u{0${1}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + '\\u{\\u{0}'
|
| + ],
|
| + 'exprs': []
|
| +})`\u{\u{0}`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + '\\u{\\u{0}',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`\u{\u{0}${0}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\u{\\u{0}'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`left${0}\u{\u{0}`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\u{\\u{0}',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0,
|
| + 1
|
| + ]
|
| +})`left${0}\u{\u{0}${1}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + '\\u{110000}'
|
| + ],
|
| + 'exprs': []
|
| +})`\u{110000}`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + '\\u{110000}',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`\u{110000}${0}right`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\u{110000}'
|
| + ],
|
| + 'exprs': [
|
| + 0
|
| + ]
|
| +})`left${0}\u{110000}`;
|
| +
|
| +check({
|
| + 'cooked': [
|
| + 'left',
|
| + undefined,
|
| + 'right'
|
| + ],
|
| + 'raw': [
|
| + 'left',
|
| + '\\u{110000}',
|
| + 'right'
|
| + ],
|
| + 'exprs': [
|
| + 0,
|
| + 1
|
| + ]
|
| +})`left${0}\u{110000}${1}right`;
|
|
|