mirror of https://github.com/tc39/test262.git
Import tests from Google V8 (templates)
These tests are derived from the following files within the Google V8 project: test/mjsunit/es6/templates.js Some of these tests include non-printable characters, causing git to infer that they are binary files. Introduce a `.gitattributes` file to configure git to consistently display the source text of all JavaScript files.
This commit is contained in:
parent
43acf615b5
commit
1f22932d69
|
@ -0,0 +1 @@
|
|||
*.js diff
|
|
@ -0,0 +1,21 @@
|
|||
// 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: 21.1.2.4
|
||||
description: >
|
||||
When used as a tag function of a tagged template, `String.raw` should
|
||||
return the "raw" representation of the template.
|
||||
---*/
|
||||
|
||||
assert.sameValue(
|
||||
String.raw`\u0065\`\r\r\n\n${'test'}check`,
|
||||
'\\u0065\\`\\r\\r\\n\\ntestcheck',
|
||||
'Unicode escape sequences'
|
||||
);
|
||||
assert.sameValue(
|
||||
String.raw`\
\
|
||||
\
|
||||
`,
|
||||
'\\\n\\\n\\\n',
|
||||
'Literal characters'
|
||||
);
|
|
@ -0,0 +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: 21.1.2.4
|
||||
description: >
|
||||
If literalSegments ≤ 0, return the empty string.
|
||||
---*/
|
||||
|
||||
assert.sameValue(String.raw``, '');
|
|
@ -0,0 +1,25 @@
|
|||
// 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 in left-to-right order.
|
||||
---*/
|
||||
|
||||
var tag = function(templateObject, a, b, c) {
|
||||
callCount++;
|
||||
assert.sameValue(a, 0);
|
||||
assert.sameValue(b, 1);
|
||||
assert.sameValue(c, 2);
|
||||
};
|
||||
var i = 0;
|
||||
var callCount;
|
||||
|
||||
assert.sameValue(`a${ i++ }b${ i++ }c${ i++ }d`, 'a0b1c2d');
|
||||
|
||||
i = 0;
|
||||
callCount = 0;
|
||||
|
||||
tag`a${ i++ }b${ i++ }c${ i++ }d`;
|
||||
|
||||
assert.sameValue(callCount, 1);
|
|
@ -0,0 +1,11 @@
|
|||
// 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 Stings accordingto the
|
||||
ToString abstract operation.
|
||||
---*/
|
||||
function fn() { return 'result'; }
|
||||
|
||||
assert.sameValue(`foo ${fn()} bar`, 'foo result bar');
|
|
@ -0,0 +1,13 @@
|
|||
// 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: >
|
||||
The expression within the template should be evaluated according to the
|
||||
semantics of the surrounding context.
|
||||
The SV of EscapeSequence :: HexEscapeSequence is the SV of the
|
||||
HexEscapeSequence.
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
assert.sameValue(`${'\07'}`, '');
|
|
@ -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
|
||||
description: >
|
||||
The expression within the template should be evaluated according to the
|
||||
semantics of the surrounding context.
|
||||
The SV of EscapeSequence :: HexEscapeSequence is the SV of the
|
||||
HexEscapeSequence.
|
||||
negative: SyntaxError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
`${'\07'}`;
|
|
@ -0,0 +1,13 @@
|
|||
// 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 Stings accordingto the
|
||||
ToString abstract operation.
|
||||
---*/
|
||||
var object = {
|
||||
fn: function() { return 'result'; }
|
||||
};
|
||||
|
||||
assert.sameValue(`foo ${object.fn()} bar`, 'foo result bar');
|
|
@ -0,0 +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: 12.2.8
|
||||
description: >
|
||||
Expressions should be evaluated and converted to Stings accordingto 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'
|
||||
);
|
|
@ -0,0 +1,24 @@
|
|||
// 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 Stings according to the
|
||||
ToString abstract operation.
|
||||
---*/
|
||||
var plain = {};
|
||||
var custom = {
|
||||
toString: function() {
|
||||
return '"own" toString';
|
||||
}
|
||||
};
|
||||
|
||||
assert.sameValue(`${plain}`, '[object Object]');
|
||||
assert.sameValue(`1${plain}`, '1[object Object]');
|
||||
assert.sameValue(`${plain}2`, '[object Object]2');
|
||||
assert.sameValue(`1${plain}2`, '1[object Object]2');
|
||||
|
||||
assert.sameValue(`${custom}`, '"own" toString');
|
||||
assert.sameValue(`1${custom}`, '1"own" toString');
|
||||
assert.sameValue(`${custom}2`, '"own" toString2');
|
||||
assert.sameValue(`1${custom}2`, '1"own" toString2');
|
|
@ -0,0 +1,11 @@
|
|||
// 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 Stings accordingto the
|
||||
ToString abstract operation.
|
||||
---*/
|
||||
|
||||
assert.sameValue(`foo ${5} bar`, 'foo 5 bar', 'number value');
|
||||
assert.sameValue(`foo ${'string'} bar`, 'foo string bar', 'string value');
|
|
@ -0,0 +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: 12.2.8
|
||||
description: >
|
||||
Expressions should be evaluated and converted to Stings accordingto the
|
||||
ToString abstract operation.
|
||||
---*/
|
||||
assert.sameValue(`foo ${`bar ${5} baz`} qux`, 'foo bar 5 baz qux');
|
|
@ -0,0 +1,25 @@
|
|||
// 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: >
|
||||
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
|
||||
an `eval` context.
|
||||
---*/
|
||||
function tag(templateObject) {
|
||||
previousObject = templateObject;
|
||||
}
|
||||
var a = 1;
|
||||
var b = 2;
|
||||
var firstObject = null;
|
||||
var previousObject = null;
|
||||
|
||||
tag`head${a}tail`;
|
||||
firstObject = previousObject;
|
||||
assert(firstObject !== null);
|
||||
previousObject = null;
|
||||
|
||||
eval('tag`head${b}tail`');
|
||||
assert.sameValue(previousObject, firstObject);
|
|
@ -0,0 +1,29 @@
|
|||
// 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: >
|
||||
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
|
||||
an `eval` context.
|
||||
---*/
|
||||
function tag(templateObject) {
|
||||
previousObject = templateObject;
|
||||
}
|
||||
var a = 1;
|
||||
var b = 2;
|
||||
var firstObject = null;
|
||||
var previousObject = null;
|
||||
|
||||
tag`head${a}tail`;
|
||||
firstObject = previousObject;
|
||||
assert(firstObject !== null);
|
||||
previousObject = null;
|
||||
|
||||
(new Function('tag', 'a', 'b', 'return tag`head${b}tail`;'))(tag, 1, 2);
|
||||
assert.sameValue(
|
||||
previousObject,
|
||||
firstObject,
|
||||
'The realm\'s template cache is referenced when tagged templates are declared within "new Function" contexts and templated values differ'
|
||||
);
|
|
@ -0,0 +1,24 @@
|
|||
// 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: >
|
||||
Previously-created template objects should be retrieved from the internal
|
||||
template registry when their source is identical but their expressions
|
||||
evaluate to different values.
|
||||
---*/
|
||||
function tag(templateObject) {
|
||||
previousObject = templateObject;
|
||||
}
|
||||
var a = 1;
|
||||
var b = 2;
|
||||
var firstObject = null;
|
||||
var previousObject = null;
|
||||
|
||||
tag`head${a}tail`;
|
||||
firstObject = previousObject;
|
||||
assert(firstObject !== null);
|
||||
previousObject = null;
|
||||
|
||||
tag`head${b}tail`;
|
||||
assert.sameValue(previousObject, firstObject);
|
|
@ -0,0 +1,24 @@
|
|||
// 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: >
|
||||
The internal template registry should be queried according to the "raw"
|
||||
strings of the tagged template.
|
||||
---*/
|
||||
var previousObject = null;
|
||||
var firstObject = null;
|
||||
function tag(templateObject) {
|
||||
previousObject = templateObject;
|
||||
}
|
||||
|
||||
tag`\uc548\ub155`;
|
||||
|
||||
assert(previousObject !== null);
|
||||
firstObject = previousObject;
|
||||
previousObject = null;
|
||||
|
||||
tag`안녕`;
|
||||
|
||||
assert(previousObject !== null);
|
||||
assert(firstObject !== previousObject);
|
|
@ -0,0 +1,24 @@
|
|||
// 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: >
|
||||
The internal template registry should be queried according to the number of
|
||||
"raw" strings in the tagged template.
|
||||
---*/
|
||||
var previousObject = null;
|
||||
var firstObject = null;
|
||||
function tag(templateObject) {
|
||||
previousObject = templateObject;
|
||||
}
|
||||
|
||||
tag`foo${1}bar`;
|
||||
|
||||
assert(previousObject !== null);
|
||||
firstObject = previousObject;
|
||||
previousObject = null;
|
||||
|
||||
tag`foo\${1}bar`;
|
||||
|
||||
assert(previousObject !== null);
|
||||
assert(firstObject !== previousObject);
|
|
@ -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: 12.2.8
|
||||
description: >
|
||||
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.
|
||||
---*/
|
||||
function tag(templateObject) {
|
||||
previousObject = templateObject;
|
||||
}
|
||||
var a = 1;
|
||||
var firstObject = null;
|
||||
var previousObject = null;
|
||||
|
||||
tag`head${a}tail`;
|
||||
firstObject = previousObject;
|
||||
assert(firstObject !== null);
|
||||
previousObject = null;
|
||||
|
||||
eval('tag`head${a}tail`');
|
||||
assert.sameValue(previousObject, firstObject);
|
|
@ -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: 12.2.8
|
||||
description: >
|
||||
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.
|
||||
---*/
|
||||
function tag(templateObject) {
|
||||
previousObject = templateObject;
|
||||
}
|
||||
var a = 1;
|
||||
var firstObject = null;
|
||||
var previousObject = null;
|
||||
|
||||
tag`head${a}tail`;
|
||||
firstObject = previousObject;
|
||||
assert(firstObject !== null);
|
||||
previousObject = null;
|
||||
|
||||
(new Function('tag', 'a', 'b', 'return tag`head${b}tail`;'))(tag, 1, 2);
|
||||
assert.sameValue(previousObject, firstObject);
|
|
@ -0,0 +1,26 @@
|
|||
// 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: >
|
||||
Previously-created template objects should be retrieved from the internal
|
||||
template registry when their source is identical.
|
||||
---*/
|
||||
function tag(templateObject) {
|
||||
previousObject = templateObject;
|
||||
}
|
||||
var a = 1;
|
||||
var firstObject = null;
|
||||
var previousObject = null;
|
||||
|
||||
tag`head${a}tail`;
|
||||
firstObject = previousObject;
|
||||
assert(firstObject !== null);
|
||||
previousObject = null;
|
||||
|
||||
tag`head${a}tail`;
|
||||
assert.sameValue(
|
||||
previousObject,
|
||||
firstObject,
|
||||
'The realm\'s template cache is used when tagged templates are executed in the source code directly'
|
||||
);
|
|
@ -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: 12.3.7
|
||||
description: >
|
||||
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() {
|
||||
calls++;
|
||||
assert.sameValue(
|
||||
arguments.length, 1, 'NoSubstitutionTemplate arguments length'
|
||||
);
|
||||
})`NoSubstitutionTemplate`;
|
||||
assert.sameValue(calls, 1, 'NoSubstitutionTemplate function invocation');
|
||||
|
||||
calls = 0;
|
||||
(function(site, n, s, o, f, r) {
|
||||
calls++;
|
||||
assert.sameValue(arguments.length, 6);
|
||||
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');
|
|
@ -0,0 +1,20 @@
|
|||
// 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.3.7
|
||||
description: >
|
||||
Tagged templates may be chained and are applied in a left-to-right order.
|
||||
---*/
|
||||
|
||||
var callCount = 0;
|
||||
var expected = ['x', 'y', 'z'];
|
||||
var tag = function(templateObject) {
|
||||
assert.sameValue(templateObject[0], expected[callCount]);
|
||||
callCount++;
|
||||
return tag;
|
||||
}
|
||||
|
||||
var result = tag`x``y``z`;
|
||||
|
||||
assert.sameValue(callCount, 3);
|
||||
assert.sameValue(result, tag);
|
|
@ -0,0 +1,27 @@
|
|||
// 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.3.7
|
||||
description: >
|
||||
Tagged template application takes precedence over `new` invocation.
|
||||
---*/
|
||||
|
||||
function Constructor(x) {
|
||||
arg = x;
|
||||
}
|
||||
var tag = function(x) {
|
||||
templateObject = x;
|
||||
return Constructor;
|
||||
};
|
||||
var arg = null;
|
||||
var instance, templateObject;
|
||||
|
||||
instance = new tag`first template`;
|
||||
|
||||
assert(instance instanceof Constructor);
|
||||
assert.sameValue(templateObject[0], 'first template');
|
||||
assert.sameValue(arg, undefined);
|
||||
|
||||
instance = new tag`second template`('constructor argument');
|
||||
assert.sameValue(templateObject[0], 'second template', 'tagging function');
|
||||
assert.sameValue(arg, 'constructor argument');
|
|
@ -0,0 +1,20 @@
|
|||
// 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.3.7
|
||||
description: >
|
||||
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 context;
|
||||
var obj = {
|
||||
fn: function() {
|
||||
context = this;
|
||||
}
|
||||
};
|
||||
|
||||
obj.fn`NoSubstitutionTemplate`;
|
||||
|
||||
assert.sameValue(context, obj);
|
|
@ -0,0 +1,47 @@
|
|||
// 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.3.7
|
||||
description: >
|
||||
The first argument to a tagged template should be a template object as
|
||||
defined by the GetTemplateObject abstract operation.
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
var templateObject;
|
||||
|
||||
(function(parameter) {
|
||||
templateObject = parameter;
|
||||
})`${1}`;
|
||||
|
||||
templateObject.test262Prop = true;
|
||||
assert.sameValue(
|
||||
templateObject.test262Prop, undefined, 'The template object is frozen'
|
||||
);
|
||||
assert(Array.isArray(templateObject.raw), 'The template object is an array');
|
||||
|
||||
assert(templateObject.hasOwnProperty('raw'));
|
||||
verifyNotEnumerable(templateObject, 'raw');
|
||||
verifyNotWritable(templateObject, 'raw')
|
||||
verifyNotConfigurable(templateObject, 'raw');
|
||||
|
||||
templateObject.raw.test262Prop = true;
|
||||
assert.sameValue(
|
||||
templateObject.raw.test262Prop, undefined, 'The "raw" object is frozen'
|
||||
);
|
||||
assert(Array.isArray(templateObject), 'The "raw" object is an array');
|
||||
|
||||
verifyEnumerable(templateObject, '0');
|
||||
verifyNotWritable(templateObject, '0')
|
||||
verifyNotConfigurable(templateObject, '0');
|
||||
|
||||
verifyNotEnumerable(templateObject, 'length');
|
||||
verifyNotWritable(templateObject, 'length')
|
||||
verifyNotConfigurable(templateObject, 'length');
|
||||
|
||||
verifyEnumerable(templateObject.raw, '0');
|
||||
verifyNotWritable(templateObject.raw, '0')
|
||||
verifyNotConfigurable(templateObject.raw, '0');
|
||||
|
||||
verifyNotEnumerable(templateObject.raw, 'length');
|
||||
verifyNotWritable(templateObject.raw, 'length')
|
||||
verifyNotConfigurable(templateObject.raw, 'length');
|
|
@ -0,0 +1,88 @@
|
|||
// 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);
|
|
@ -0,0 +1,39 @@
|
|||
// 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], ' |