Skip to content

Instantly share code, notes, and snippets.

@dead-claudia
Last active December 2, 2017 18:58
Show Gist options
  • Save dead-claudia/ff0791a7dac10f06751006c6be4d6755 to your computer and use it in GitHub Desktop.
Save dead-claudia/ff0791a7dac10f06751006c6be4d6755 to your computer and use it in GitHub Desktop.
Test262 runner
/**
* Copyright (c) 2017 and later, Isiah Meadows. Licensed under the ISC License.
*/
// Execute the Test262 test suite with a parser. This checks for parser
// conformance correctly, and requires little configuration on your part.
//
// Options supported, `opts.test262Dir`, `opts.test`, and `opts.parse` are
// required:
// - `opts.test262Dir` - The directory to a clone of the Test262 suite
// - `opts.all` - Set to `true` to run all tests, and not just the
// `test/**/language/` ones (most others are redundant)
// - `opts.annexB` - Set to `true` to run Annex B tests
// - `opts.test(name, callback)` - The function to call on each test, called
// with the test name + a callback that runs the test
// - `opts.skip` - A list of features to skip.
// - `opts.ignore` - A list of globs to ignore.
// - `opts.parse(file, source, opts)` - Parse a script/module given a `file`,
// its `source`, and various `opts`, where:
// - `opts.features` is a dictionary of features
// - `opts.type` is one of:
// - `"non-strict"` - Parse it in non-strict mode as a script
// - `"strict"` - Parse it in implicit strict mode as a script
// - `"module"` - Parse it in implicit strict mode as a module
//
// Notes:
// - This depends on `glob` and `js-yaml`.
// - Some tests are run with a modified source and/or result. Look in
// parser-test262-overrides.json to see which ones are modified.
// - Not all tests are run, just the language tests
// - If you lack an option to parse a script in strict mode without
// `"use strict"`, you should prepend the string `'"use strict";\n'` before
// parsing.
/* eslint-disable import/no-extraneous-dependencies, max-statements */
"use strict"
const fs = require("fs")
const path = require("path")
const {AssertionError} = require("assert")
const util = require("util")
const glob = require("glob")
const jsYaml = require("js-yaml")
const {evaled, overrides} = require("./test262-overrides.json")
module.exports = opts => {
const resolve = dir => path.resolve(opts.test262Dir, dir)
// The rest are all testing built-ins, not the language (and thus are of
// limited use for parsers)
const ignore = []
let globPath
if (opts.all) {
globPath = "test/**/*.js"
if (!opts.annexB) ignore.push("test/annexB/**/*.js")
} else if (opts.annexB) {
globPath = "test{,/annexB}/language/**/*.js"
ignore.push("test/annexB/language/eval-code/**/*.js")
} else {
globPath = "test/language/**/*.js"
}
const matched = glob.sync(resolve(globPath), {
ignore: ignore.concat(opts.ignore || []).map(resolve),
nodir: true,
realpath: true,
})
for (const file of matched) {
if (file.slice(-11) === "_FIXTURE.js") return
const resolved = resolve(file)
const relative = path.relative(opts.test262Dir, resolved)
// Because Windows paths suck.
.replace(/\\/g, "/")
let desc = evaled[relative]
if (desc == null) {
const source = fs.readFileSync(resolved, "utf-8")
const start = source.indexOf("/*---") + 5
const end = source.indexOf("---*/", start)
if (start < 5 || end < 0) {
throw new TypeError("Missing YAML data block!")
}
const features = Object.create(null)
const meta = jsYaml.safeLoad(source.slice(start, end), {
filename: file,
})
const pass = overrides[relative] != null ||
meta.negative == null ||
meta.negative.phase !== "early" ||
meta.negative.type !== "SyntaxError"
let type = "both"
if (meta.flags != null) {
if (meta.flags.includes("module")) type = "module"
else if (meta.flags.includes("onlyStrict")) type = "onlyStrict"
else if (meta.flags.includes("noStrict")) type = "noStrict"
else if (meta.flags.includes("raw")) type = "noStrict"
}
if (meta.features != null) {
for (const feature of meta.features) features[feature] = true
}
desc = {source, type, features, pass}
}
const features = desc.features || Object.create(null)
if (opts.skip != null) {
for (const feature of opts.skip) if (features[feature]) return
}
const test = type => opts.test(`${relative} (${type})`, () => {
if (desc.pass) {
// Just let the test framework handle the error
opts.parse(file, desc.source, {features, type})
} else {
let result
try {
result = opts.parse(file, desc.source, {features, type})
} catch (e) {
return
}
throw new AssertionError({
message: `(${type}) Expected an error to be thrown, ` +
`but returned: ${util.inspect(result).slice(0, 128)}`,
actual: result,
stackStartFunction: AssertionError,
})
}
})
switch (desc.type) {
case "both":
test("non-strict")
test("strict")
break
case "module":
test("module")
break
case "onlyStrict":
test("strict")
break
case "noStrict":
test("non-strict")
break
default:
throw new TypeError(`Unexpected type: `${desc.type}`)
}
}
}
{
"_0": "Note: properties like these are comments, and you should ignore ",
"_1": "them.",
"_2": "These are files that should still parse, but are listed as ",
"_3": "throwing early `SyntaxError`s",
"overrides": {
"test/language/module-code/instn-resolve-err-reference.js": true,
"test/language/module-code/instn-resolve-empty-export.js": true,
"test/language/module-code/instn-resolve-err-syntax.js": true
},
"_4": "These are files where the real thing is in a call to `eval`",
"evaled": {
"test/language/directive-prologue/10.1.1-19-s.js": {
"source": "function fun() { \"use strict\"; var public = 1; }",
"type": "noStrict",
"pass": false
},
"test/language/directive-prologue/10.1.1-2-s.js": {
"source": "\"use strict\"\nvar public = 1;",
"type": "noStrict",
"pass": false
},
"test/language/directive-prologue/10.1.1-20-s.js": {
"source": "function fun() { var public = 1; \"use strict\"; assert.sameValue(public, 1); }",
"type": "noStrict",
"pass": true
},
"test/language/directive-prologue/10.1.1-21-s.js": {
"source": "function fun() { var public = 1; assert.sameValue(public, 1); \"use strict\"; }",
"type": "noStrict",
"pass": true
},
"test/language/directive-prologue/10.1.1-22-s.js": {
"source": "(function () { \"use strict\"; var public = 1; }) ();",
"type": "noStrict",
"pass": false
},
"test/language/directive-prologue/10.1.1-23-s.js": {
"source": "(function () { var public = 1; assert.sameValue(public, 1); \"use strict\"; }) ();",
"type": "noStrict",
"pass": false
},
"test/language/directive-prologue/10.1.1-24-s.js": {
"source": "(function () { var public = 1; \"use strict\"; assert.sameValue(public, 1); }) ();",
"type": "noStrict",
"pass": false
},
"test/language/directive-prologue/10.1.1-15-s.js": {
"source": "function testcase() { \"use strict\"; function fun() { var public = 1; } }",
"type": "noStrict",
"pass": false
},
"test/language/directive-prologue/10.1.1-16-s.js": {
"source": "function testcase() { \"use strict\"; assert.throws(SyntaxError, function() { var public = 1; }); }",
"type": "noStrict",
"pass": false
},
"test/language/directive-prologue/10.1.1-17-s.js": {
"source": "assert.throws(SyntaxError, function() { \"use strict\"; var obj = {}; Object.defineProperty(obj, \"accProperty\", { get: function () { public = 1; return 11; } }); var temp = obj.accProperty === 11; });",
"type": "noStrict",
"pass": false
},
"test/language/directive-prologue/10.1.1-25-s.js": {
"source": "assert.throws(SyntaxError, function() { var obj = {}; Object.defineProperty(obj, \"accProperty\", { get: function () { \"use strict\"; var public = 1; return 11; } }); var temp = obj.accProperty === 11; });",
"type": "noStrict",
"pass": false
},
"test/language/directive-prologue/10.1.1-27-s.js": {
"source": "assert.throws(SyntaxError, function() { var obj = {}; Object.defineProperty(obj, \"accProperty\", { get: function () { \"use strict\"; var public = 1; return 11; } }); var temp = obj.accProperty === 11; });",
"type": "noStrict",
"pass": false
},
"test/language/directive-prologue/10.1.1-18-s.js": {
"source": "assert.throws(SyntaxError, function() { \"use strict\"; var obj = {}; Object.defineProperty(obj, \"accProperty\", { set: function (value) { var public = 1; data = value; } }); obj.accProperty = \"overrideData\"; });",
"type": "noStrict",
"pass": false
},
"test/language/directive-prologue/10.1.1-26-s.js": {
"source": "assert.throws(SyntaxError, function() { var obj = {}; Object.defineProperty(obj, \"accProperty\", { set: function (value) { \"use strict\"; var public = 1; data = value; } }); obj.accProperty = \"overrideData\"; });",
"type": "noStrict",
"pass": false
},
"test/language/expressions/addition/S11.6.1_A1.js": {
"source": "1\u0009+\u00091; 1\u000B+\u000B1; 1\u000C+\u000C1; 1\u0020+\u00201; 1\u00A0+\u00A01; 1\u000A+\u000A1; 1\u000D+\u000D1; 1\u2028+\u20281; 1\u2029+\u20291; 1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029+\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/expressions/assignment/11.13.1-4-30-s.js": {
"source": "(eval) = 20;",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/assignment/11.13.1-4-28-s.js": {
"source": "var eval = 20;",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/assignment/S11.13.1_A1.js": {
"source": "x\u0009=\u0009true; x\u000B=\u000Btrue; x\u000C=\u000Ctrue; x\u0020=\u0020true; x\u00A0=\u00A0true; x\u000A=\u000Atrue; x\u000D=\u000Dtrue; x\u2028=\u2028true; x\u2029=\u2029true; x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true",
"type": "both",
"pass": true
},
"test/language/expressions/assignment/11.13.1-4-29-s.js": {
"source": "function testcase() { var arguments = 20; }",
"type": "onlyStrict",
"pass": true
},
"test/language/expressions/assignment/11.13.1-4-31-s.js": {
"source": "function testcase() { (arguments) = 20; }",
"type": "onlyStrict",
"pass": true
},
"test/language/expressions/bitwise-and/S11.10.1_A1.js": {
"source": "1\u0009&\u00091; 1\u000B&\u000B1; 1\u000C&\u000C1; 1\u0020&\u00201; 1\u00A0&\u00A01; 1\u000A&\u000A1; 1\u000D&\u000D1; 1\u2028&\u20281; 1\u2029&\u20291; 1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029&\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/expressions/bitwise-not/S11.4.8_A1.js": {
"source": "~\u00090; ~\u000B0; ~\u000C0; ~\u00200; ~\u00A00; ~\u000A0; ~\u000D0; ~\u20280; ~\u20290; ~\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20290",
"type": "both",
"pass": true
},
"test/language/expressions/call/S11.2.3_A1.js": {
"source": "Number\u0009(); Number\u000B(); Number\u000C(); Number\u0020(); Number\u00A0(); Number\u000A(); Number\u000D(); Number\u2028(); Number\u2029(); Number\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029()",
"type": "both",
"pass": true
},
"test/language/expressions/bitwise-or/S11.10.3_A1.js": {
"source": "0\u0009|\u00091; 0\u000B|\u000B1; 0\u000C|\u000C1; 0\u0020|\u00201; 0\u00A0|\u00A01; 0\u000A|\u000A1; 0\u000D|\u000D1; 0\u2028|\u20281; 0\u2029|\u20291; 0\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029|\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/expressions/bitwise-xor/S11.10.2_A1.js": {
"source": "1\u0009^\u00091; 1\u000B^\u000B1; 1\u000C^\u000C1; 1\u0020^\u00201; 1\u00A0^\u00A01; 1\u000A^\u000A1; 1\u000D^\u000D1; 1\u2028^\u20281; 1\u2029^\u20291; 1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029^\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/expressions/compound-assignment/11.13.2-6-1-s.js": {
"source": "eval *= 20;",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/compound-assignment/11.13.2-6-10-s.js": {
"source": "eval ^= 20;",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/compound-assignment/11.13.2-6-11-s.js": {
"source": "eval |= 20;",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/compound-assignment/11.13.2-6-2-s.js": {
"source": "eval /= 20;",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/compound-assignment/11.13.2-6-3-s.js": {
"source": "eval %= 20;",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/compound-assignment/11.13.2-6-4-s.js": {
"source": "eval += 20;",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/compound-assignment/11.13.2-6-5-s.js": {
"source": "eval -= 20;",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/compound-assignment/11.13.2-6-6-s.js": {
"source": "eval <<= 20;",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/compound-assignment/11.13.2-6-7-s.js": {
"source": "eval >>= 20;",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/compound-assignment/11.13.2-6-8-s.js": {
"source": "eval >>>= 20;",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/compound-assignment/11.13.2-6-9-s.js": {
"source": "eval &= 20;",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/comma/S11.14_A1.js": {
"source": "false\u0009,\u0009true; false\u000B,\u000Btrue; false\u000C,\u000Ctrue; false\u0020,\u0020true; false\u00A0,\u00A0true; false\u000A,\u000Atrue; false\u000D,\u000Dtrue; false\u2028,\u2028true; false\u2029,\u2029true; false\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029,\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true",
"type": "both",
"pass": true
},
"test/language/expressions/compound-assignment/S11.13.2_A1_T1.js": {
"source": "x\u0009*=\u0009-1; x\u000B*=\u000B-1; x\u000C*=\u000C-1; x\u0020*=\u0020-1; x\u00A0*=\u00A0-1; x\u000A*=\u000A-1; x\u000D*=\u000D-1; x\u2028*=\u2028-1; x\u2029*=\u2029-1; x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029*=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-1",
"type": "both",
"pass": true
},
"test/language/expressions/compound-assignment/S11.13.2_A1_T10.js": {
"source": "x\u0009^=\u0009-1; x\u000B^=\u000B-1; x\u000C^=\u000C-1; x\u0020^=\u0020-1; x\u00A0^=\u00A0-1; x\u000A^=\u000A-1; x\u000D^=\u000D-1; x\u2028^=\u2028-1; x\u2029^=\u2029-1; x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029^=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-1",
"type": "both",
"pass": true
},
"test/language/expressions/compound-assignment/S11.13.2_A1_T11.js": {
"source": "x\u0009|=\u0009-1; x\u000B|=\u000B-1; x\u000C|=\u000C-1; x\u0020|=\u0020-1; x\u00A0|=\u00A0-1; x\u000A|=\u000A-1; x\u000D|=\u000D-1; x\u2028|=\u2028-1; x\u2029|=\u2029-1; x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029|=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-1",
"type": "both",
"pass": true
},
"test/language/expressions/compound-assignment/S11.13.2_A1_T2.js": {
"source": "x\u0009/=\u0009-1; x\u000B/=\u000B-1; x\u000C/=\u000C-1; x\u0020/=\u0020-1; x\u00A0/=\u00A0-1; x\u000A/=\u000A-1; x\u000D/=\u000D-1; x\u2028/=\u2028-1; x\u2029/=\u2029-1; x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029/=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-1",
"type": "both",
"pass": true
},
"test/language/expressions/compound-assignment/S11.13.2_A1_T3.js": {
"source": "x\u0009%=\u0009-1; x\u000B%=\u000B-1; x\u000C%=\u000C-1; x\u0020%=\u0020-1; x\u00A0%=\u00A0-1; x\u000A%=\u000A-1; x\u000D%=\u000D-1; x\u2028%=\u2028-1; x\u2029%=\u2029-1; x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029%=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-1",
"type": "both",
"pass": true
},
"test/language/expressions/compound-assignment/S11.13.2_A1_T4.js": {
"source": "x\u0009+=\u0009-1; x\u000B+=\u000B-1; x\u000C+=\u000C-1; x\u0020+=\u0020-1; x\u00A0+=\u00A0-1; x\u000A+=\u000A-1; x\u000D+=\u000D-1; x\u2028+=\u2028-1; x\u2029+=\u2029-1; x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029+=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-1",
"type": "both",
"pass": true
},
"test/language/expressions/compound-assignment/S11.13.2_A1_T5.js": {
"source": "x\u0009-=\u0009-1; x\u000B-=\u000B-1; x\u000C-=\u000C-1; x\u0020-=\u0020-1; x\u00A0-=\u00A0-1; x\u000A-=\u000A-1; x\u000D-=\u000D-1; x\u2028-=\u2028-1; x\u2029-=\u2029-1; x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-1",
"type": "both",
"pass": true
},
"test/language/expressions/compound-assignment/S11.13.2_A1_T6.js": {
"source": "x\u0009<<=\u0009-1; x\u000B<<=\u000B-1; x\u000C<<=\u000C-1; x\u0020<<=\u0020-1; x\u00A0<<=\u00A0-1; x\u000A<<=\u000A-1; x\u000D<<=\u000D-1; x\u2028<<=\u2028-1; x\u2029<<=\u2029-1; x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029<<=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-1",
"type": "both",
"pass": true
},
"test/language/expressions/compound-assignment/S11.13.2_A1_T7.js": {
"source": "x\u0009>>=\u0009-1; x\u000B>>=\u000B-1; x\u000C>>=\u000C-1; x\u0020>>=\u0020-1; x\u00A0>>=\u00A0-1; x\u000A>>=\u000A-1; x\u000D>>=\u000D-1; x\u2028>>=\u2028-1; x\u2029>>=\u2029-1; x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029>>=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-1",
"type": "both",
"pass": true
},
"test/language/expressions/compound-assignment/S11.13.2_A1_T8.js": {
"source": "x\u0009>>>=\u0009-1; x\u000B>>>=\u000B-1; x\u000C>>>=\u000C-1; x\u0020>>>=\u0020-1; x\u00A0>>>=\u00A0-1; x\u000A>>>=\u000A-1; x\u000D>>>=\u000D-1; x\u2028>>>=\u2028-1; x\u2029>>>=\u2029-1; x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029>>>=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-1",
"type": "both",
"pass": true
},
"test/language/expressions/compound-assignment/S11.13.2_A1_T9.js": {
"source": "x\u0009&=\u0009-1; x\u000B&=\u000B-1; x\u000C&=\u000C-1; x\u0020&=\u0020-1; x\u00A0&=\u00A0-1; x\u000A&=\u000A-1; x\u000D&=\u000D-1; x\u2028&=\u2028-1; x\u2029&=\u2029-1; x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029&=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-1",
"type": "both",
"pass": true
},
"test/language/expressions/compound-assignment/11.13.2-6-12-s.js": {
"source": "function testcase() { arguments *= 20; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/compound-assignment/11.13.2-6-13-s.js": {
"source": "function testcase() { arguments /= 20; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/compound-assignment/11.13.2-6-14-s.js": {
"source": "function testcase() { arguments %= 20; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/compound-assignment/11.13.2-6-15-s.js": {
"source": "function testcase() { arguments += 20; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/compound-assignment/11.13.2-6-16-s.js": {
"source": "function testcase() { arguments -= 20; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/compound-assignment/11.13.2-6-17-s.js": {
"source": "function testcase() { arguments <<= 20; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/compound-assignment/11.13.2-6-18-s.js": {
"source": "function testcase() { arguments >>= 20; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/compound-assignment/11.13.2-6-19-s.js": {
"source": "function testcase() { arguments >>>= 20; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/compound-assignment/11.13.2-6-20-s.js": {
"source": "function testcase() { arguments &= 20; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/compound-assignment/11.13.2-6-21-s.js": {
"source": "function testcase() { arguments ^= 20; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/compound-assignment/11.13.2-6-22-s.js": {
"source": "function testcase() { arguments |= 20; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/S11.4.1_A1.js": {
"source": "delete\u00090; delete\u000B0; delete\u000C0; delete\u00200; delete\u00A00; delete\u000A0; delete\u000D0; delete\u20280; delete\u20290; delete\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20290",
"type": "both",
"pass": true
},
"test/language/expressions/division/S11.5.2_A1.js": {
"source": "1\u0009/\u00091; 1\u000B/\u000B1; 1\u000C/\u000C1; 1\u0020/\u00201; 1\u00A0/\u00A01; 1\u000A/\u000A1; 1\u000D/\u000D1; 1\u2028/\u20281; 1\u2029/\u20291; 1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029/\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/expressions/does-not-equals/S11.9.2_A1.js": {
"source": "1\u0009!=\u00091; 1\u000B!=\u000B1; 1\u000C!=\u000C1; 1\u0020!=\u00201; 1\u00A0!=\u00A01; 1\u000A!=\u000A1; 1\u000D!=\u000D1; 1\u2028!=\u20281; 1\u2029!=\u20291; 1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029!=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/expressions/equals/S11.9.1_A1.js": {
"source": "1\u0009==\u00091; 1\u000B==\u000B1; 1\u000C==\u000C1; 1\u0020==\u00201; 1\u00A0==\u00A01; 1\u000A==\u000A1; 1\u000D==\u000D1; 1\u2028==\u20281; 1\u2029==\u20291; 1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029==\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/expressions/conditional/S11.12_A1.js": {
"source": "false\u0009?\u0009true\u0009:\u0009true; false\u000B?\u000Btrue\u000B:\u000Btrue; false\u000C?\u000Ctrue\u000C:\u000Ctrue; false\u0020?\u0020true\u0020:\u0020true; false\u00A0?\u00A0true\u00A0:\u00A0true; false\u000A?\u000Atrue\u000A:\u000Atrue; false\u000D?\u000Dtrue\u000D:\u000Dtrue; false\u2028?\u2028true\u2028:\u2028true; false\u2029?\u2029true\u2029:\u2029true; false\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029?\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029:\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true",
"type": "both",
"pass": true
},
"test/language/expressions/delete/11.4.1-3-a-1-s.js": {
"source": "function testcase() { delete obj; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-1-s.js": {
"source": "var _11_4_1_5; function testcase() { delete _11_4_1_5; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-10-s.js": {
"source": "var arrObj = [1, 2, 3]; function testcase() { delete arrObj; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-11-s.js": {
"source": "var strObj = new String(\"abc\"); function testcase() { delete strObj; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-12-s.js": {
"source": "var boolObj = new Boolean(false); function testcase() { delete boolObj; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-13-s.js": {
"source": "var numObj = new Number(0); function testcase() { delete numObj; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-14-s.js": {
"source": "var dateObj = new Date(); function testcase() { delete dateObj; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-15-s.js": {
"source": "var regObj = new RegExp(); function testcase() { delete regObj; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-16-s.js": {
"source": "var errObj = new Error(); function testcase() { delete errObj; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-17-s.js": {
"source": "var argObj = (function (a, b) { delete arguments; }(1, 2));",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-18-s.js": {
"source": "function testcase() { delete Object; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-19-s.js": {
"source": "function testcase() { delete Function; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-2-s.js": {
"source": "function funObj(x) { delete x; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-20-s.js": {
"source": "function testcase() { delete Array; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-21-s.js": {
"source": "function testcase() { delete String; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-22-s.js": {
"source": "function testcase() { delete Boolean; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-23-s.js": {
"source": "function testcase() { delete Number; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-24-s.js": {
"source": "function testcase() { delete Date; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-25-s.js": {
"source": "function testcase() { delete RegExp; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-26-s.js": {
"source": "function testcase() { delete Error; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-3-s.js": {
"source": "function funObj() {}; function testcase() { delete funObj; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-4-s.js": {
"source": "function funObj(x, y, z) { delete y; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-5-s.js": {
"source": "var _11_4_1_5 = true; function testcase() { delete _11_4_1_5; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-6-s.js": {
"source": "var _11_4_1_5 = \"abc\"; function testcase() { delete _11_4_1_5; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-7-s.js": {
"source": "var obj = new Object(); function testcase() { delete obj; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-8-s.js": {
"source": "var funObj = function () { }; function testcase() { delete funObj; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/delete/11.4.1-5-a-9-s.js": {
"source": "function funObj() { }; function testcase() { delete funObj; }",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/greater-than-or-equal/S11.8.4_A1.js": {
"source": "1\u0009>=\u00091; 1\u000B>=\u000B1; 1\u000C>=\u000C1; 1\u0020>=\u00201; 1\u00A0>=\u00A01; 1\u000A>=\u000A1; 1\u000D>=\u000D1; 1\u2028>=\u20281; 1\u2029>=\u20291; 1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029>=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/expressions/greater-than/S11.8.2_A1.js": {
"source": "1\u0009>\u00091; 1\u000B>\u000B1; 1\u000C>\u000C1; 1\u0020>\u00201; 1\u00A0>\u00A01; 1\u000A>\u000A1; 1\u000D>\u000D1; 1\u2028>\u20281; 1\u2029>\u20291; 1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029>\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/expressions/left-shift/S11.7.1_A1.js": {
"source": "1\u0009<<\u00091; 1\u000B<<\u000B1; 1\u000C<<\u000C1; 1\u0020<<\u00201; 1\u00A0<<\u00A01; 1\u000A<<\u000A1; 1\u000D<<\u000D1; 1\u2028<<\u20281; 1\u2029<<\u20291; 1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029<<\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/expressions/logical-not/S11.4.9_A1.js": {
"source": "!\u0009true; !\u000Btrue; !\u000Ctrue; !\u0020true; !\u00A0true; !\u000Atrue; !\u000Dtrue; !\u2028true; !\u2029true; !\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true",
"type": "both",
"pass": true
},
"test/language/expressions/modulus/S11.5.3_A1.js": {
"source": "1\u0009%\u00091; 1\u000B%\u000B1; 1\u000C%\u000C1; 1\u0020%\u00201; 1\u00A0%\u00A01; 1\u000A%\u000A1; 1\u000D%\u000D1; 1\u2028%\u20281; 1\u2029%\u20291; 1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029%\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/expressions/grouping/S11.1.6_A1.js": {
"source": "(\u00091\u0009); (\u000B1\u000B); (\u000C1\u000C); (\u00201\u0020); (\u00A01\u00A0); (\u000A1\u000A); (\u000D1\u000D); (\u20281\u2028); (\u20291\u2029); (\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029)",
"type": "both",
"pass": true
},
"test/language/expressions/in/S11.8.7_A1.js": {
"source": "'MAX_VALUE'\u0009in\u0009Number; 'MAX_VALUE'\u000Bin\u000BNumber; 'MAX_VALUE'\u000Cin\u000CNumber; 'MAX_VALUE'\u0020in\u0020Number; 'MAX_VALUE'\u00A0in\u00A0Number; 'MAX_VALUE'\u000Ain\u000ANumber; 'MAX_VALUE'\u000Din\u000DNumber; 'MAX_VALUE'\u2028in\u2028Number; 'MAX_VALUE'\u2029in\u2029Number; 'MAX_VALUE'\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029in\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029Number",
"type": "both",
"pass": true
},
"test/language/expressions/instanceof/S11.8.6_A1.js": {
"source": "({})\u0009instanceof\u0009Object; ({})\u000Binstanceof\u000BObject; ({})\u000Cinstanceof\u000CObject; ({})\u0020instanceof\u0020Object; ({})\u00A0instanceof\u00A0Object; ({})\u000Ainstanceof\u000AObject; ({})\u000Dinstanceof\u000DObject; ({})\u2028instanceof\u2028Object; ({})\u2029instanceof\u2029Object; ({})\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029instanceof\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029Object",
"type": "both",
"pass": true
},
"test/language/expressions/less-than-or-equal/S11.8.3_A1.js": {
"source": "1\u0009<=\u00091; 1\u000B<=\u000B1; 1\u000C<=\u000C1; 1\u0020<=\u00201; 1\u00A0<=\u00A01; 1\u000A<=\u000A1; 1\u000D<=\u000D1; 1\u2028<=\u20281; 1\u2029<=\u20291; 1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029<=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/expressions/less-than/S11.8.1_A1.js": {
"source": "1\u0009<\u00091; 1\u000B<\u000B1; 1\u000C<\u000C1; 1\u0020<\u00201; 1\u00A0<\u00A01; 1\u000A<\u000A1; 1\u000D<\u000D1; 1\u2028<\u20281; 1\u2029<\u20291; 1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029<\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/expressions/logical-and/S11.11.1_A1.js": {
"source": "true\u0009&&\u0009true; true\u000B&&\u000Btrue; true\u000C&&\u000Ctrue; true\u0020&&\u0020true; true\u00A0&&\u00A0true; true\u000A&&\u000Atrue; true\u000D&&\u000Dtrue; true\u2028&&\u2028true; true\u2029&&\u2029true; true\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029&&\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true",
"type": "both",
"pass": true
},
"test/language/expressions/logical-or/S11.11.2_A1.js": {
"source": "false\u0009||\u0009true; false\u000B||\u000Btrue; false\u000C||\u000Ctrue; false\u0020||\u0020true; false\u00A0||\u00A0true; false\u000A||\u000Atrue; false\u000D||\u000Dtrue; false\u2028||\u2028true; false\u2029||\u2029true; false\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029||\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true",
"type": "both",
"pass": true
},
"test/language/expressions/multiplication/S11.5.1_A1.js": {
"source": "1\u0009*\u00091; 1\u000B*\u000B1; 1\u000C*\u000C1; 1\u0020*\u00201; 1\u00A0*\u00A01; 1\u000A*\u000A1; 1\u000D*\u000D1; 1\u2028*\u20281; 1\u2029*\u20291; 1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029*\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/expressions/new/S11.2.2_A1.1.js": {
"source": "new\u0009Number; new\u000BNumber; new\u000CNumber; new\u0020Number; new\u00A0Number; new\u000ANumber; new\u000DNumber; new\u2028Number; new\u2029Number; new\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029Number",
"type": "both",
"pass": true
},
"test/language/expressions/new/S11.2.2_A1.2.js": {
"source": "new\u0009Number(); new\u000BNumber(); new\u000CNumber(); new\u0020Number(); new\u00A0Number(); new\u000ANumber(); new\u000DNumber(); new\u2028Number(); new\u2029Number(); new\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029Number()",
"type": "both",
"pass": true
},
"test/language/expressions/object/11.1.5-1-s.js": {
"source": "var obj = {set _11_1_5_1_fun(eval) {}};",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/object/11.1.5-4-4-a-1-s.js": {
"source": "({foo:0,foo:1});",
"type": "both",
"pass": true
},
"test/language/expressions/object/11.1.5-3-s.js": {
"source": "var obj = {set _11_1_5_3_fun(eval) { \"use strict\"; }};",
"type": "noStrict",
"pass": true
},
"test/language/expressions/object/11.1.5_4-4-b-2.js": {
"source": "({foo : 1, get foo(){}});",
"type": "both",
"pass": true
},
"test/language/expressions/object/11.1.5_4-4-c-1.js": {
"source": "({get foo(){}, foo : 1});",
"type": "both",
"pass": true
},
"test/language/expressions/object/11.1.5_4-4-c-2.js": {
"source": "({set foo(x){}, foo : 1});",
"type": "both",
"pass": true
},
"test/language/expressions/object/11.1.5_4-4-d-1.js": {
"source": "({get foo(){}, get foo(){}});",
"type": "both",
"pass": true
},
"test/language/expressions/object/11.1.5_4-4-d-2.js": {
"source": "({set foo(arg){}, set foo(arg1){}});",
"type": "both",
"pass": true
},
"test/language/expressions/object/11.1.5_4-4-d-3.js": {
"source": "({get foo(){}, set foo(arg){}, get foo(){}});",
"type": "both",
"pass": true
},
"test/language/expressions/object/11.1.5_4-4-d-4.js": {
"source": "({set foo(arg){}, get foo(){}, set foo(arg1){}});",
"type": "both",
"pass": true
},
"test/language/expressions/object/11.1.5-2-s.js": {
"source": "var obj = {set _11_1_5_2_fun(arguments) {} };",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/object/11.1.5-4-s.js": {
"source": "var obj = {set _11_1_5_4_fun(arguments) {\"use strict\";}};",
"type": "noStrict",
"pass": false
},
"test/language/expressions/object/11.1.5_6-2-1-s.js": {
"source": "var obj = { get _11_1_5_6_2_1() { public = 42; return public; } };",
"type": "noStrict",
"pass": false
},
"test/language/expressions/object/11.1.5_6-2-2-s.js": {
"source": "var obj = { get _11_1_5_6_2_2() { \"use strict\"; public = 42; return public; } }; var _11_1_5_6_2_2 = obj._11_1_5_6_2_2;",
"type": "noStrict",
"pass": false
},
"test/language/expressions/object/11.1.5_7-2-1-s.js": {
"source": "var data = \"data\"; var obj = { set _11_1_5_7_2_1(value) { public = 42; data = value; } }; obj._11_1_5_7_2_1 = 1;",
"type": "noStrict",
"pass": false
},
"test/language/expressions/object/11.1.5_7-2-2-s.js": {
"source": "var data = \"data\"; var obj = { set _11_1_5_7_2_2(value) { public = 42; data = value; } }; obj._11_1_5_7_2_2 = 1;",
"type": "noStrict",
"pass": false
},
"test/language/expressions/object/11.1.5_4-4-a-2.js": {
"source": "({foo:0,foo:1});",
"type": "noStrict",
"pass": true
},
"test/language/expressions/postfix-decrement/11.3.2-2-1-s.js": {
"source": "function testcase() { arguments--; }",
"type": "onlyStrict",
"pass": true
},
"test/language/expressions/postfix-decrement/11.3.2-2-2-s.js": {
"source": "eval--;",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/postfix-increment/11.3.1-2-2-s.js": {
"source": "eval++;",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/prefix-decrement/11.4.5-2-1-s.js": {
"source": "--eval;",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/prefix-increment/11.4.4-2-1-s.js": {
"source": "++eval;",
"type": "onlyStrict",
"pass": false
},
"test/language/expressions/prefix-increment/S11.4.4_A1.js": {
"source": "var x = 0; ++\u0009x; var x = 0; ++\u000Bx; var x = 0; ++\u000Cx; var x = 0; ++\u0020x; var x = 0; ++\u00A0x; var x = 0; ++\u000Ax; var x = 0; ++\u000Dx; var x = 0; ++\u2028x; var x = 0; ++\u2029x; var x = 0; ++\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029x",
"type": "both",
"pass": true
},
"test/language/expressions/strict-does-not-equals/S11.9.5_A1.js": {
"source": "1\u0009!==\u00091; 1\u000B!==\u000B1; 1\u000C!==\u000C1; 1\u0020!==\u00201; 1\u00A0!==\u00A01; 1\u000A!==\u000A1; 1\u000D!==\u000D1; 1\u2028!==\u20281; 1\u2029!==\u20291; 1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029!==\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/expressions/strict-equals/S11.9.4_A1.js": {
"source": "1\u0009===\u00091; 1\u000B===\u000B1; 1\u000C===\u000C1; 1\u0020===\u00201; 1\u00A0===\u00A01; 1\u000A===\u000A1; 1\u000D===\u000D1; 1\u2028===\u20281; 1\u2029===\u20291; 1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029===\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/expressions/subtraction/S11.6.2_A1.js": {
"source": "1\u0009-\u00091; 1\u000B-\u000B1; 1\u000C-\u000C1; 1\u0020-\u00201; 1\u00A0-\u00A01; 1\u000A-\u000A1; 1\u000D-\u000D1; 1\u2028-\u20281; 1\u2029-\u20291; 1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/expressions/postfix-increment/S11.3.1_A1.2_T1.js": {
"source": "var x = 0; x\u0009++; x; var x = 0; x\u000B++; x; var x = 0; x\u000C++; x; var x = 0; x\u0020++; x; var x = 0; x\u00A0++; x; var x = 0; x\u0009\u000B\u000C\u0020\u00A0++; x",
"type": "both",
"pass": true
},
"test/language/expressions/prefix-decrement/S11.4.5_A1.js": {
"source": "var x = 1; --\u0009x; var x = 1; --\u000Bx; var x = 1; --\u000Cx; var x = 1; --\u0020x; var x = 1; --\u00A0x; var x = 1; --\u000Ax; var x = 1; --\u000Dx; var x = 1; --\u2028x; var x = 1; --\u2029x; var x = 1; --\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029x",
"type": "both",
"pass": true
},
"test/language/expressions/right-shift/S11.7.2_A1.js": {
"source": "-4\u0009>>\u00091; -4\u000B>>\u000B1; -4\u000C>>\u000C1; -4\u0020>>\u00201; -4\u00A0>>\u00A01; -4\u000A>>\u000A1; -4\u000D>>\u000D1; -4\u2028>>\u20281; -4\u2029>>\u20291; -4\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029>>\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/expressions/postfix-decrement/S11.3.2_A1.2_T1.js": {
"source": "var x = 0; x\u0009--; x; var x = 0; x\u000B--; x; var x = 0; x\u000C--; x; var x = 0; x\u0020--; x; var x = 0; x\u00A0--; x; var x = 0; x\u0009\u000B\u000C\u0020\u00A0--; x",
"type": "both",
"pass": true
},
"test/language/expressions/property-accessors/S11.2.1_A1.1.js": {
"source": "Number\u0009.\u0009POSITIVE_INFINITY; Number\u000B.\u000BPOSITIVE_INFINITY; Number\u000C.\u000CPOSITIVE_INFINITY; Number\u0020.\u0020POSITIVE_INFINITY; Number\u00A0.\u00A0POSITIVE_INFINITY; Number\u000A.\u000APOSITIVE_INFINITY; Number\u000D.\u000DPOSITIVE_INFINITY; Number\u2028.\u2028POSITIVE_INFINITY; Number\u2029.\u2029POSITIVE_INFINITY; Number\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029.\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029POSITIVE_INFINITY",
"type": "both",
"pass": true
},
"test/language/expressions/property-accessors/S11.2.1_A1.2.js": {
"source": "Number[\u0009\"POSITIVE_INFINITY\"\u0009]; Number[\u000B\"POSITIVE_INFINITY\"\u000B]; Number[\u000C\"POSITIVE_INFINITY\"\u000C]; Number[\u0020\"POSITIVE_INFINITY\"\u0020]; Number[\u00A0\"POSITIVE_INFINITY\"\u00A0]; Number[\u000A\"POSITIVE_INFINITY\"\u000A]; Number[\u000D\"POSITIVE_INFINITY\"\u000D]; Number[\u2028\"POSITIVE_INFINITY\"\u2028]; Number[\u2029\"POSITIVE_INFINITY\"\u2029]; Number[\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029\"POSITIVE_INFINITY\"\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029]",
"type": "both",
"pass": true
},
"test/language/expressions/postfix-increment/11.3.1-2-1-s.js": {
"source": "function testcase() { arguments++; }",
"type": "onlyStrict",
"pass": true
},
"test/language/expressions/prefix-decrement/11.4.5-2-2-s.js": {
"source": "function testcase() { --arguments; }",
"type": "onlyStrict",
"pass": true
},
"test/language/expressions/prefix-increment/11.4.4-2-2-s.js": {
"source": "function testcase() { ++arguments; }",
"type": "onlyStrict",
"pass": true
},
"test/language/expressions/unary-minus/S11.4.7_A1.js": {
"source": "-\u00091; -\u000B1; -\u000C1; -\u00201; -\u00A01; -\u000A1; -\u000D1; -\u20281; -\u20291; -\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/expressions/unary-plus/S11.4.6_A1.js": {
"source": "+\u00091; +\u000B1; +\u000C1; +\u00201; +\u00A01; +\u000A1; +\u000D1; +\u20281; +\u20291; +\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/expressions/void/S11.4.2_A1.js": {
"source": "void\u00090; void\u000B0; void\u000C0; void\u00200; void\u00A00; void\u000A0; void\u000D0; void\u20280; void\u20290; void\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20290",
"type": "both",
"pass": true
},
"test/language/expressions/typeof/syntax.js": {
"source": "var x = 0; typeof\u0009x; var x = 0; typeof\u000Bx; var x = 0; typeof\u000Cx; var x = 0; typeof\u0020x; var x = 0; typeof\u00A0x; var x = 0; typeof\u000Ax; var x = 0; typeof\u000Dx; var x = 0; typeof\u2028x; var x = 0; typeof\u2029x; var x = 0; typeof\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029x; typeof(0)",
"type": "both",
"pass": true
},
"test/language/expressions/unsigned-right-shift/S11.7.3_A1.js": {
"source": "-4\u0009>>>\u00091; -4\u000B>>>\u000B1; -4\u000C>>>\u000C1; -4\u0020>>>\u00201; -4\u00A0>>>\u00A01; -4\u000A>>>\u000A1; -4\u000D>>>\u000D1; -4\u2028>>>\u20281; -4\u2029>>>\u20291; -4\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029>>>\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291",
"type": "both",
"pass": true
},
"test/language/line-terminators/S7.3_A1.1_T1.js": {
"source": "\u000Avar\u000Ax\u000A=\u000A1\u000A; result = x; \u000Avar\u000Ax\u000A=\u000A2\u000A; result = x; \nvar\nx\n=\n3\n; result = x; \nvar\nx\n=\n4\n; result = x; \u000Avar\nx\u000A=\n5\u000A; result = x;",
"type": "both",
"pass": true
},
"test/language/line-terminators/S7.3_A1.2_T1.js": {
"source": "\u000Dvar\u000Dx\u000D=\u000D1\u000D; result = x; \u000Dvar\u000Dx\u000D=\u000D2\u000D; result = x; \rvar\rx\r=\r3\r; result = x; \rvar\rx\r=\r4\r; result = x; \u000Dvar\rx\u000D=\r5\u000D; result = x;",
"type": "both",
"pass": true
},
"test/language/line-terminators/S7.3_A1.3.js": {
"source": "\u2028var\u2028x\u2028=\u20281\u2028; result = x; \u2028var\u2028x\u2028=\u20282\u2028; result = x;",
"type": "both",
"pass": true
},
"test/language/line-terminators/S7.3_A1.4.js": {
"source": "\u2029var\u2029x\u2029=\u20291\u2029; result = x; \u2029var\u2029x\u2029=\u20292\u2029; result = x;",
"type": "both",
"pass": true
},
"test/language/line-terminators/7.3-1.js": {
"source": "test7_3_1\u2028prop = 66;",
"type": "both",
"pass": true
},
"test/language/line-terminators/7.3-10.js": {
"source": "var prop = \\u2029;",
"type": "both",
"pass": false
},
"test/language/line-terminators/7.3-2.js": {
"source": "test7_3_1\u2028prop = 66;",
"type": "both",
"pass": true
},
"test/language/line-terminators/7.3-3.js": {
"source": "//Single Line Comments\u2028 var =;",
"type": "both",
"pass": false
},
"test/language/line-terminators/7.3-4.js": {
"source": "//Single Line Comments\u2029 var =;",
"type": "both",
"pass": false
},
"test/language/line-terminators/7.3-7.js": {
"source": "var regExp = /[\u2028]/",
"type": "both",
"pass": false
},
"test/language/line-terminators/7.3-8.js": {
"source": "var regExp = /[\u2029]/",
"type": "both",
"pass": false
},
"test/language/line-terminators/7.3-9.js": {
"source": "var prop = \\u2028;",
"type": "both",
"pass": false
},
"test/language/line-terminators/S7.3_A3.1_T1.js": {
"source": "// single line \u000A throw new Test262Error();",
"type": "both",
"pass": true
},
"test/language/line-terminators/S7.3_A4_T1.js": {
"source": "// single line comment\u000A // single line comment\u000A x = 1;",
"type": "both",
"pass": true
},
"test/language/line-terminators/S7.3_A4_T2.js": {
"source": "// single line comment\u000D // single line comment\u000D x = 1;",
"type": "both",
"pass": true
},
"test/language/line-terminators/S7.3_A4_T3.js": {
"source": "// single line comment\u2028 // single line comment\u2028 x = 1;",
"type": "both",
"pass": true
},
"test/language/line-terminators/S7.3_A4_T4.js": {
"source": "// single line comment\u2029 // single line comment\u2029 x = 1;",
"type": "both",
"pass": true
},
"test/language/line-terminators/S7.3_A5.1_T1.js": {
"source": "/*\u000A multi line \u000A comment \u000A*/ /*\u000A multi line \u000A comment \u000A x = 1;*/",
"type": "both",
"pass": true
},
"test/language/line-terminators/S7.3_A5.2_T1.js": {
"source": "/*\u000D multi line \u000D comment \u000D*/ /*\u000D multi line \u000D comment \u000D x = 1;*/",
"type": "both",
"pass": true
},
"test/language/line-terminators/S7.3_A5.3.js": {
"source": "/*\u2028 multi line \u2028 comment \u2028*/ /*\u2028 multi line \u2028 comment \u2028 x = 1;*/",
"type": "both",
"pass": true
},
"test/language/line-terminators/S7.3_A5.4.js": {
"source": "/*\u2029 multi line \u2029 comment \u2029*/ /*\u2029 multi line \u2029 comment \u2029 x = 1;*/",
"type": "both",
"pass": true
},
"test/language/line-terminators/S7.3_A7_T1.js": {
"source": "// CHECK#1\nvar y=2;\nvar z=3;\nvar\nx\n=\ny\n+\nz\n;\nif (x !== 5) {\n $ERROR('#1: var\\nx\\n=\\ny\\n+\\nz\\n; x === 5. Actual: ' + (x));\n}\nx=0;\n\n// CHECK#2\nvar y=2;\nvar z=3;\nvar\nx\n=\ny\n+\nz\n;\nif (x !== 5) {\n $ERROR('#2: var\\nx\\n=\\ny\\n+\\nz\\n; x === 5. Actual: ' + (x));\n}\nx=0;\n\n// CHECK#3\nvar result;\nvar y=2;\nvar z=3;\n\u2028var\u2028x\u2028=\u2028y\u2028+\u2028z\u2028; result = x;\nif (result !== 5) {\n $ERROR('#3: eval(\"\\u2028var\\u2028x\\u2028=\\u2028y\\u2028+\\u2028z\\u2028; result = x;\"); result === 5. Actual: ' + (result));\n}\nresult=0;\n\n// CHECK#4\nvar y=2;\nvar z=3;\n\u2029var\u2029x\u2029=\u2029y\u2029+\u2029z\u2029; result = x;\nif (result !== 5) {\n $ERROR('#4: eval(\"\\u2029var\\u2029x\\u2029=\\u2029y\\u2029+\\u2029z\\u2029; result = x;\"); result === 5. Actual: ' + (result));\n}",
"type": "both",
"pass": true
},
"test/language/line-terminators/S7.3_A7_T2.js": {
"source": "// CHECK#1\nvar y=3;\nvar z=2;\nvar\nx\n=\ny\n-\nz\n;\nif (x !== 1) {\n $ERROR('#1: var\\nx\\n=\\ny\\n-\\nz\\n; x === 1. Actual: ' + (x));\n}\nx=0;\n\n// CHECK#2\nvar y=3;\nvar z=2;\nvar\nx\n=\ny\n-\nz\n;\nif (x !== 1) {\n $ERROR('#2: var\\nx\\n=\\ny\\n-\\nz\\n; x === 1. Actual: ' + (x));\n}\nx=0;\n\n// CHECK#3\nvar result;\nvar y=3;\nvar z=2;\u2028var\u2028x\u2028=\u2028y\u2028-\u2028z\u2028; result = x;\nif (result !== 1) {\n $ERROR('#3: eval(\"\\u2028var\\u2028x\\u2028=\\u2028y\\u2028-\\u2028z\\u2028; result = x;\"); result === 1. Actual: ' + (result));\n}\nresult=0;\n\n// CHECK#4\nvar y=3;\nvar z=2;\u2029var\u2029x\u2029=\u2029y\u2029-\u2029z\u2029; result = x;\nif (result !== 1) {\n $ERROR('#4: eval(\"\\u2029var\\u2029x\\u2029=\\u2029y\\u2029-\\u2029z\\u2029; result = x;\"); result === 1. Actual: ' + (result));\n}",
"type": "both",
"pass": true
},
"test/language/line-terminators/S7.3_A7_T3.js": {
"source": "// CHECK#1\nvar y=3;\nvar z=2;\nvar\nx\n=\ny\n*\nz\n;\nif (x !== 6) {\n $ERROR('#1: var\\nx\\n=\\ny\\n*\\nz\\n; x === 6. Actual: ' + (x));\n}\nx=0;\n\n// CHECK#2\nvar y=3;\nvar z=2;\nvar\nx\n=\ny\n*\nz\n;\nif (x !== 6) {\n $ERROR('#2: var\\nx\\n=\\ny\\n*\\nz\\n; x === 6. Actual: ' + (x));\n}\nx=0;\n\n// CHECK#3\nvar result;\nvar y=3;\nvar z=2;\n\u2028var\u2028x\u2028=\u2028y\u2028*\u2028z\u2028; result = x;\nif (result !== 6) {\n $ERROR('#3: eval(\"\\u2028var\\u2028x\\u2028=\\u2028y\\u2028*\\u2028z\\u2028; result = x;\"); result === 6. Actual: ' + (result));\n}\nresult=0;\n\n// CHECK#4\nvar y=3;\nvar z=2;\n\u2029var\u2029x\u2029=\u2029y\u2029*\u2029z\u2029; result = x;\nif (result !== 6) {\n $ERROR('#4: eval(\"\\u2029var\\u2029x\\u2029=\\u2029y\\u2029*\\u2029z\\u2029; result = x;\"); result === 6. Actual: ' + (result));\n}",
"type": "both",
"pass": true
},
"test/language/line-terminators/S7.3_A7_T4.js": {
"source": "// CHECK#1\nvar y=3;\nvar z=2;\nvar\nx\n=\ny\n/\nz\n;\nif (x !== 6) {\n $ERROR('#1: var\\nx\\n=\\ny\\n/\\nz\\n; x === 6. Actual: ' + (x));\n}\nx=0;\n\n// CHECK#2\nvar y=3;\nvar z=2;\nvar\nx\n=\ny\n/\nz\n;\nif (x !== 6) {\n $ERROR('#2: var\\nx\\n=\\ny\\n/\\nz\\n; x === 6. Actual: ' + (x));\n}\nx=0;\n\n// CHECK#3\nvar result;\nvar y=3;\nvar z=2;\n\u2028var\u2028x\u2028=\u2028y\u2028/\u2028z\u2028; result = x;\nif (result !== 6) {\n $ERROR('#3: eval(\"\\u2028var\\u2028x\\u2028=\\u2028y\\u2028/\\u2028z\\u2028; result = x;\"); result === 6. Actual: ' + (result));\n}\nresult=0;\n\n// CHECK#4\nvar y=3;\nvar z=2;\n\u2029var\u2029x\u2029=\u2029y\u2029/\u2029z\u2029; result = x;\nif (result !== 6) {\n $ERROR('#4: eval(\"\\u2029var\\u2029x\\u2029=\\u2029y\\u2029/\\u2029z\\u2029; result = x;\"); result === 6. Actual: ' + (result));\n}",
"type": "both",
"pass": true
},
"test/language/line-terminators/S7.3_A7_T5.js": {
"source": "// CHECK#1\nvar y=3;\nvar z=2;\nvar\nx\n=\ny\n%\nz\n;\nif (x !== 6) {\n $ERROR('#1: var\\nx\\n=\\ny\\n%\\nz\\n; x === 6. Actual: ' + (x));\n}\nx=0;\n\n// CHECK#2\nvar y=3;\nvar z=2;\nvar\nx\n=\ny\n%\nz\n;\nif (x !== 6) {\n $ERROR('#2: var\\nx\\n=\\ny\\n%\\nz\\n; x === 6. Actual: ' + (x));\n}\nx=0;\n\n// CHECK#3\nvar result;\nvar y=3;\nvar z=2;\n\u2028var\u2028x\u2028=\u2028y\u2028%\u2028z\u2028; result = x;\nif (result !== 6) {\n $ERROR('#3: eval(\"\\u2028var\\u2028x\\u2028=\\u2028y\\u2028%\\u2028z\\u2028; result = x;\"); result === 6. Actual: ' + (result));\n}\nresult=0;\n\n// CHECK#4\nvar y=3;\nvar z=2;\n\u2029var\u2029x\u2029=\u2029y\u2029%\u2029z\u2029; result = x;\nif (result !== 6) {\n $ERROR('#4: eval(\"\\u2029var\\u2029x\\u2029=\\u2029y\\u2029%\\u2029z\\u2029; result = x;\"); result === 6. Actual: ' + (result));\n}",
"type": "both",
"pass": true
},
"test/language/line-terminators/S7.3_A7_T6.js": {
"source": "// CHECK#1\nvar y=3;\nvar z=2;\nvar\nx\n=\ny\n>>\nz\n;\nif (x !== 6) {\n $ERROR('#1: var\\nx\\n=\\ny\\n>>\\nz\\n; x === 6. Actual: ' + (x));\n}\nx=0;\n\n// CHECK#2\nvar y=3;\nvar z=2;\nvar\nx\n=\ny\n>>\nz\n;\nif (x !== 6) {\n $ERROR('#2: var\\nx\\n=\\ny\\n>>\\nz\\n; x === 6. Actual: ' + (x));\n}\nx=0;\n\n// CHECK#3\nvar result;\nvar y=3;\nvar z=2;\n\u2028var\u2028x\u2028=\u2028y\u2028>>\u2028z\u2028; result = x;\nif (result !== 6) {\n $ERROR('#3: eval(\"\\u2028var\\u2028x\\u2028=\\u2028y\\u2028>>\\u2028z\\u2028; result = x;\"); result === 6. Actual: ' + (result));\n}\nresult=0;\n\n// CHECK#4\nvar y=3;\nvar z=2;\n\u2029var\u2029x\u2029=\u2029y\u2029>>\u2029z\u2029; result = x;\nif (result !== 6) {\n $ERROR('#4: eval(\"\\u2029var\\u2029x\\u2029=\\u2029y\\u2029>>\\u2029z\\u2029; result = x;\"); result === 6. Actual: ' + (result));\n}",
"type": "both",
"pass": true
},
"test/language/line-terminators/S7.3_A7_T7.js": {
"source": "// CHECK#1\nvar y=3;\nvar z=2;\nvar\nx\n=\ny\n<<\nz\n;\nif (x !== 6) {\n $ERROR('#1: var\\nx\\n=\\ny\\n<<\\nz\\n; x === 6. Actual: ' + (x));\n}\nx=0;\n\n// CHECK#2\nvar y=3;\nvar z=2;\nvar\nx\n=\ny\n<<\nz\n;\nif (x !== 6) {\n $ERROR('#2: var\\nx\\n=\\ny\\n<<\\nz\\n; x === 6. Actual: ' + (x));\n}\nx=0;\n\n// CHECK#3\nvar result;\nvar y=3;\nvar z=2;\n\u2028var\u2028x\u2028=\u2028y\u2028<<\u2028z\u2028; result = x;\nif (result !== 6) {\n $ERROR('#3: eval(\"\\u2028var\\u2028x\\u2028=\\u2028y\\u2028<<\\u2028z\\u2028; result = x;\"); result === 6. Actual: ' + (result));\n}\nresult=0;\n\n// CHECK#4\nvar y=3;\nvar z=2;\n\u2029var\u2029x\u2029=\u2029y\u2029<<\u2029z\u2029; result = x;\nif (result !== 6) {\n $ERROR('#4: eval(\"\\u2029var\\u2029x\\u2029=\\u2029y\\u2029<<\\u2029z\\u2029; result = x;\"); result === 6. Actual: ' + (result));\n}",
"type": "both",
"pass": true
},
"test/language/line-terminators/S7.3_A7_T8.js": {
"source": "// CHECK#1\nvar y=3;\nvar z=2;\nvar\nx\n=\ny\n<\nz\n;\nif (x !== 6) {\n $ERROR('#1: var\\nx\\n=\\ny\\n<\\nz\\n; x === 6. Actual: ' + (x));\n}\nx=0;\n\n// CHECK#2\nvar y=3;\nvar z=2;\nvar\nx\n=\ny\n<\nz\n;\nif (x !== 6) {\n $ERROR('#2: var\\nx\\n=\\ny\\n<\\nz\\n; x === 6. Actual: ' + (x));\n}\nx=0;\n\n// CHECK#3\nvar result;\nvar y=3;\nvar z=2;\n\u2028var\u2028x\u2028=\u2028y\u2028<\u2028z\u2028; result = x;\nif (result !== 6) {\n $ERROR('#3: eval(\"\\u2028var\\u2028x\\u2028=\\u2028y\\u2028<\\u2028z\\u2028; result = x;\"); result === 6. Actual: ' + (result));\n}\nresult=0;\n\n// CHECK#4\nvar y=3;\nvar z=2;\n\u2029var\u2029x\u2029=\u2029y\u2029<\u2029z\u2029; result = x;\nif (result !== 6) {\n $ERROR('#4: eval(\"\\u2029var\\u2029x\\u2029=\\u2029y\\u2029<\\u2029z\\u2029; result = x;\"); result === 6. Actual: ' + (result));\n}",
"type": "both",
"pass": true
},
"test/language/literals/numeric/7.8.3-1-s.js": {
"source": "var _7_8_3_1 = 010;",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/numeric/7.8.3-2-s.js": {
"source": "var _7_8_3_2 = 00;",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/numeric/7.8.3-3-s.js": {
"source": "var _7_8_3_3 = 01;",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/numeric/7.8.3-4-s.js": {
"source": "var _7_8_3_4 = 06",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/numeric/7.8.3-5-s.js": {
"source": "var _7_8_3_5 = 07",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/numeric/7.8.3-6-s.js": {
"source": "var _7_8_3_6 = 000",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/numeric/7.8.3-7-s.js": {
"source": "var _7_8_3_7 = 005",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/regexp/S7.8.5_A3.1_T7.js": {
"source": "regexp = /(?:)/g",
"type": "both",
"pass": true
},
"test/language/literals/regexp/S7.8.5_A3.1_T8.js": {
"source": "regexp = /(?:)/i",
"type": "both",
"pass": true
},
"test/language/literals/regexp/S7.8.5_A3.1_T9.js": {
"source": "regexp = /(?:)/m",
"type": "both",
"pass": true
},
"test/language/literals/string/7.8.4-1-s.js": {
"source": "\"asterisk: \\052\" /* octal escape sequences forbidden in strict mode*/ ; \"use strict\";",
"type": "both",
"pass": false
},
"test/language/literals/string/7.8.4-10-s.js": {
"source": "var x = \" \\10 \";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-11-s.js": {
"source": "var x = \"\\16\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-12-s.js": {
"source": "var x = \"\\17\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-13-s.js": {
"source": "var x = \"\\30\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-14-s.js": {
"source": "var x = \"\\31\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-15-s.js": {
"source": "var x = \"\\37\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-16-s.js": {
"source": "var x = \"\\400\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-17-s.js": {
"source": "var x = \"\\411\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-18-s.js": {
"source": "var x = \"\\43a\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-19-s.js": {
"source": "var x = \"\\463\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-2-s.js": {
"source": "var x = \"\\1\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-20-s.js": {
"source": "var x = \"\\474\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-21-s.js": {
"source": "var x = \"\\77\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-22-s.js": {
"source": "var x = \"\\777\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-23-s.js": {
"source": "var x = \"\\000\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-24-s.js": {
"source": "var x = \"\\001\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-25-s.js": {
"source": "var x = \"\\106\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-26-s.js": {
"source": "var x = \"\\207\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-27-s.js": {
"source": "var x = \"\\377\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-28-s.js": {
"source": "var x = \"\\376\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-29-s.js": {
"source": "var x = \"\\3760\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-3-s.js": {
"source": "var x = \"a\\4\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-30-s.js": {
"source": "var x = \"\\1\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-31-s.js": {
"source": "var x = \"\\\" + \"1\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-32-s.js": {
"source": "var x = \"\\1\\1\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-33-s.js": {
"source": "var x = \"\\1\\2\\7\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-4-s.js": {
"source": "var x = \"z\\7\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-5-s.js": {
"source": "var x = \"\\00a\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-6-s.js": {
"source": "var x = \"\\01z\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-7-s.js": {
"source": "var x = \"\\03z\";",
"type": "onlyStrict",
"pass": false
},
"test/language/literals/string/7.8.4-8-s.js": {
"source": "var x = \" \\06\";",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/break/S12.8_A2.js": {
"source": "FOR1 : for(var i=1;i<2;i++){ LABEL1 : do {var x =1;break\u000AFOR1;var y=2;} while(0);} result = i; FOR2 : for(var i=1;i<2;i++){ LABEL2 : do {var x =1;break\u000DFOR2;var y=2;} while(0);} result = i; FOR3 : for(var i=1;i<2;i++){ LABEL3 : do {var x =1;break\u2028FOR3;var y=2;} while(0);} result = i; FOR4 : for(var i=1;i<2;i++){ LABEL4 : do {var x =1;break\u2029FOR4;var y=2;} while(0);} result = i;",
"type": "both",
"pass": true
},
"test/language/statements/block/12.1-1.js": {
"source": "try{};catch(_){}",
"type": "both",
"pass": false
},
"test/language/statements/block/12.1-2.js": {
"source": "try{};catch(_){};finally{}",
"type": "both",
"pass": false
},
"test/language/statements/block/12.1-3.js": {
"source": "try{};finally{}",
"type": "both",
"pass": false
},
"test/language/statements/block/12.1-4.js": {
"source": "if(_){};else{}",
"type": "both",
"pass": false
},
"test/language/statements/block/12.1-5.js": {
"source": "if(_){};else if(_){}",
"type": "both",
"pass": false
},
"test/language/statements/block/12.1-6.js": {
"source": "if(_){};else if(_){};else{}",
"type": "both",
"pass": false
},
"test/language/statements/block/12.1-7.js": {
"source": "do{};while(_)",
"type": "both",
"pass": false
},
"test/language/statements/continue/S12.7_A2.js": {
"source": "FOR1 : for(var i=1;i<2;i++){FOR1NESTED : for(var j=1;j<2;j++) { continue\u000AFOR1; } while(0);} result = j; FOR2 : for(var i=1;i<2;i++){FOR2NESTED : for(var j=1;j<2;j++) { continue\u000DFOR2; } while(0);} result = j; FOR3 : for(var i=1;i<2;i++){FOR3NESTED : for(var j=1;j<2;j++) { continue\u2028FOR3; } while(0);} result = j; FOR4 : for(var i=1;i<2;i++){FOR4NESTED : for(var j=1;j<2;j++) { continue\u2029FOR4; } while(0);} result = j;",
"type": "both",
"pass": true
},
"test/language/statements/do-while/S12.6.1_A8.js": {
"source": "FOR1 : fordo { __condition++; if (((''+__condition/2).split('.')).length>1) continue; __odds++;} while(__condition < 10)",
"type": "both",
"pass": true
},
"test/language/statements/for-in/S12.6.4_A4.1.js": {
"source": "for(var ind in (hash={2:'b',1:'a',4:'d',3:'c'}))__str+=hash[ind]",
"type": "both",
"pass": true
},
"test/language/statements/for-in/S12.6.4_A4.js": {
"source": "for(ind in (hash={2:'b',1:'a',4:'d',3:'c'}))__str+=hash[ind]",
"type": "both",
"pass": true
},
"test/language/statements/do-while/S12.6.1_A5.js": {
"source": "do {__in__do__before__break=1; break; __in__do__after__break=2;} while(0)",
"type": "both",
"pass": true
},
"test/language/statements/for-in/S12.6.4_A3.js": {
"source": "for(ind in (arr=[2,1,4,3]))__str+=arr[ind]",
"type": "both",
"pass": true
},
"test/language/statements/for-in/S12.6.4_A3.1.js": {
"source": "for(var ind in (arr=[2,1,4,3]))__str+=arr[ind]",
"type": "both",
"pass": true
},
"test/language/statements/for/S12.6.3_A9.1.js": {
"source": "for(count=0;;) {if (count===supreme)break;else count++; }",
"type": "both",
"pass": true
},
"test/language/statements/for/S12.6.3_A9.js": {
"source": "for(var count=0;;) {if (count===supreme)break;else count++; }",
"type": "both",
"pass": true
},
"test/language/statements/function/13.1-35-s.js": {
"source": "'use strict'; function eval() { };",
"type": "noStrict",
"pass": false
},
"test/language/statements/function/13.1-37-s.js": {
"source": "'use strict'; _13_1_37_s.x = function eval() {};",
"type": "noStrict",
"pass": false
},
"test/language/statements/function/S13_A7_T2.js": {
"source": "function __func(){/ ABC}\nfunction __func(){&1}\nfunction __func(){# ABC}",
"type": "both",
"pass": false
},
"test/language/statements/function/13.1-11-s.js": {
"source": "function eval() { };",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/function/13.1-12-s.js": {
"source": "_13_1_12_s.x = function eval() {};",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/function/13.1-2-1.js": {
"source": "function foo(eval){};",
"type": "noStrict",
"pass": true
},
"test/language/statements/function/13.1-2-2.js": {
"source": "(function foo(eval){});",
"type": "noStrict",
"pass": true
},
"test/language/statements/function/13.1-3-1.js": {
"source": "function eval(){};",
"type": "noStrict",
"pass": true
},
"test/language/statements/function/13.1-3-2.js": {
"source": "(function eval(){});",
"type": "noStrict",
"pass": true
},
"test/language/statements/function/13.1-36-s.js": {
"source": "function eval() { 'use strict'; };",
"type": "noStrict",
"pass": false
},
"test/language/statements/function/13.1-15-s.js": {
"source": "'use strict';function _13_1_15_fun(eval) { }",
"type": "noStrict",
"pass": false
},
"test/language/statements/function/13.1-17-s.js": {
"source": "'use strict'; var _13_1_17_fun = function (eval) { }",
"type": "noStrict",
"pass": false
},
"test/language/statements/function/13.1-38-s.js": {
"source": "_13_1_38_s.x = function eval() {'use strict'; };",
"type": "noStrict",
"pass": false
},
"test/language/statements/function/13.1-1-s.js": {
"source": "function _13_1_1_fun(eval) { }",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/function/13.1-16-s.js": {
"source": "function _13_1_16_fun(eval) { 'use strict'; }",
"type": "noStrict",
"pass": false
},
"test/language/statements/function/13.1-18-s.js": {
"source": "var _13_1_18_fun = function (eval) { 'use strict'; }",
"type": "noStrict",
"pass": false
},
"test/language/statements/function/13.0-10-s.js": {
"source": "function _13_0_10_fun() {\nfunction _13_0_10_inner() {\n\"use strict\";\neval = 42;\n}\n_13_0_10_inner();\n};",
"type": "noStrict",
"pass": false
},
"test/language/statements/function/13.0-11-s.js": {
"source": "function _13_0_11_fun() {\n\"use strict\";\nfunction _13_0_11_inner() {\neval = 42;\n}\n_13_0_11_inner();\n};",
"type": "noStrict",
"pass": false
},
"test/language/statements/function/13.0-9-s.js": {
"source": "var _13_0_9_fun = function () {\nfunction _13_0_9_inner() { eval = 42; }\n_13_0_9_inner();\n};",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/function/13.1-20-s.js": {
"source": "function _13_1_20_fun(arguments) { 'use strict'; }",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/function/13.1-3-s.js": {
"source": "function _13_1_3_fun(arguments) { }",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/function/13.0-1.js": {
"source": "function x, y() {}",
"type": "both",
"pass": false
},
"test/language/statements/function/13.0-2.js": {
"source": "function x,y,z() {}",
"type": "both",
"pass": false
},
"test/language/statements/function/13.0-3.js": {
"source": "function obj.tt() {};",
"type": "both",
"pass": false
},
"test/language/statements/function/13.0-4.js": {
"source": "function obj.tt.ss() {};",
"type": "both",
"pass": false
},
"test/language/statements/function/13.1-1-1.js": {
"source": "function foo(a,a){}",
"type": "noStrict",
"pass": true
},
"test/language/statements/function/13.1-1-2.js": {
"source": "(function foo(a,a){})",
"type": "noStrict",
"pass": true
},
"test/language/statements/function/13.1-13-s.js": {
"source": "function arguments() { };",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/function/13.1-14-s.js": {
"source": "_13_1_14_s.x = function arguments() {};",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/function/13.1-2-5.js": {
"source": "function foo(arguments){};",
"type": "noStrict",
"pass": true
},
"test/language/statements/function/13.1-2-6.js": {
"source": "(function foo(arguments){});",
"type": "noStrict",
"pass": true
},
"test/language/statements/function/13.1-3-7.js": {
"source": "function arguments (){};",
"type": "noStrict",
"pass": true
},
"test/language/statements/function/13.1-3-8.js": {
"source": "(function arguments (){});",
"type": "noStrict",
"pass": true
},
"test/language/statements/function/13.1-40-s.js": {
"source": "function arguments() { 'use strict'; };",
"type": "noStrict",
"pass": false
},
"test/language/statements/function/S13_A16_T1.js": {
"source": "function\nx\n(\n)\n{\n}\n;\n\nx();\n\nfunction y ( ) {};\n\ny();\n\nfunction\n\nz\n\n(\n\n)\n\n{\n \n}\n\n;\n\nz();\n\nfunction\u0009\u2029w(\u000C)\u00A0{\u000D};\n\nw();",
"type": "noStrict",
"pass": true
},
"test/language/statements/function/13.1-42-s.js": {
"source": "_13_1_42_s.x = function arguments() {'use strict';};",
"type": "noStrict",
"pass": false
},
"test/language/statements/function/13.1-10-s.js": {
"source": "var _13_1_10_fun = function (param, param, param) { };",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/function/13.1-24-s.js": {
"source": "function _13_1_24_fun(param, param) { 'use strict'; }",
"type": "noStrict",
"pass": false
},
"test/language/statements/function/13.1-26-s.js": {
"source": "function _13_1_26_fun(param1, param2, param1) { 'use strict'; }",
"type": "noStrict",
"pass": false
},
"test/language/statements/function/13.1-28-s.js": {
"source": "function _13_1_28_fun(param, param, param) { 'use strict'; }",
"type": "noStrict",
"pass": false
},
"test/language/statements/function/13.1-30-s.js": {
"source": "var _13_1_30_fun = function (param, param) { 'use strict'; };",
"type": "noStrict",
"pass": false
},
"test/language/statements/function/13.1-32-s.js": {
"source": "var _13_1_32_fun = function (param1, param2, param1) { 'use strict'; };",
"type": "noStrict",
"pass": false
},
"test/language/statements/function/13.1-34-s.js": {
"source": "var _13_1_34_fun = function (param, param, param) { 'use strict'; };",
"type": "noStrict",
"pass": false
},
"test/language/statements/function/13.1-5-s.js": {
"source": "function _13_1_5_fun(param, param) { }",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/function/13.1-6-s.js": {
"source": "function _13_1_6_fun(param1, param2, param1) { }",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/function/13.1-7-s.js": {
"source": "function _13_1_7_fun(param, param, param) { }",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/function/13.1-8-s.js": {
"source": "var _13_1_8_fun = function (param, param) { };",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/function/13.1-9-s.js": {
"source": "var _13_1_9_fun = function (param1, param2, param1) { };",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/if/S12.5_A7.js": {
"source": "if(1);",
"type": "both",
"pass": true
},
"test/language/statements/return/S12.9_A2.js": {
"source": "(function(){var x = 1;return\u000Ax;var y=2;})()\n(function(){var x = 1;return\u000Dx;var y=2;})()\n(function(){var x = 1;return\u2028x;var y=2;})()\n(function(){var x =1;return\u2029x;var y=2;})()",
"type": "both",
"pass": true
},
"test/language/statements/variable/12.2.1-24-s.js": {
"source": "function foo() { var eval = 42;}",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/variable/12.2.1-26-s.js": {
"source": "function foo() { var a, eval;}",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/variable/12.2.1-27-s.js": {
"source": "function foo() { var eval = 42, a;}",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/variable/12.2.1-29-s.js": {
"source": "function foo() { var eval, a = 42;}",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/variable/12.2.1-34-s.js": {
"source": "for (var eval in null) {};",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/variable/12.2.1-35-s.js": {
"source": "for (var eval = 42 in null) {};",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/variable/12.2.1-12-s.js": {
"source": "function foo() { var arguments;}",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/variable/12.2.1-12.js": {
"source": "(function (){var arguments;})",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/variable/12.2.1-13-s.js": {
"source": "function foo() { arguments = 42; }; foo()",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/variable/12.2.1-14-s.js": {
"source": "(function (){var arguments;});",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/variable/12.2.1-15-s.js": {
"source": "(function () {arguments = 42;})()",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/variable/12.2.1-23-s.js": {
"source": "function foo() { var arguments = 42;}",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/variable/12.2.1-25-s.js": {
"source": "function foo() { var arguments, a;}",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/variable/12.2.1-28-s.js": {
"source": "function foo() { var a, arguments = 42;}",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/variable/12.2.1-30-s.js": {
"source": "function foo() { var a = 42, arguments;}",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/variable/12.2.1-32-s.js": {
"source": "function foo() { var arguments, arguments = 42;}",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/variable/12.2.1-33-s.js": {
"source": "function foo() { var a, arguments, b;}",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/variable/12.2.1-36-s.js": {
"source": "for (var arguments in null) {};",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/variable/12.2.1-37-s.js": {
"source": "for (var arguments = 42 in null) {};",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/while/S12.6.2_A8.js": {
"source": "while(__condition < 10) { __condition++; if (((''+__condition/2).split('.')).length>1) continue; __odds++;}",
"type": "both",
"pass": true
},
"test/language/statements/with/12.10.1-1-s.js": {
"source": "function f() { 'use strict'; var o = {}; with (o) {}; }",
"type": "noStrict",
"pass": false
},
"test/language/statements/with/12.10.1-2-s.js": {
"source": "function foo() { 'use strict'; function f() { var o = {}; with (o) {}; } }",
"type": "noStrict",
"pass": false
},
"test/language/statements/with/12.10.1-3-s.js": {
"source": "function foo() { function f() { 'use strict'; var o = {}; with (o) {}; } }",
"type": "noStrict",
"pass": false
},
"test/language/statements/with/12.10.1-11-s.js": {
"source": "with ({}) { throw new Error();}",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/with/12.10.1-14-s.js": {
"source": "var obj = { get(a) { with(a){} } }; ",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/with/12.10.1-15-s.js": {
"source": "var obj = {}; obj.get = function (a) { with(a){} }; ",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/with/12.10.1-16-s.js": {
"source": "var obj = {}; obj['get'] = function (a) { with(a){} }; ",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/with/12.10.1-7-s.js": {
"source": "var f = function () { var o = {}; with (o) {}; }",
"type": "onlyStrict",
"pass": false
},
"test/language/statements/with/12.10.1-9-s.js": {
"source": "var f = function () { 'use strict'; var o = {}; with (o) {}; }",
"type": "onlyStrict",
"pass": false
},
"test/language/white-space/S7.2_A1.1_T1.js": {
"source": "\u0009var\u0009x\u0009=\u00091\u0009; result = x; \u0009var\u0009x\u0009=\u00092\u0009; result = x; \tvar\tx\t=\t3\t; result = x; \tvar\tx\t=\t4\t; result = x; \u0009var\tx\u0009=\t5\u0009; result = x;",
"type": "both",
"pass": true
},
"test/language/white-space/S7.2_A1.2_T1.js": {
"source": "\u000Bvar\u000Bx\u000B=\u000B1\u000B; result = x; \u000Bvar\u000Bx\u000B=\u000B2\u000B; result = x; \u000Bvar\u000Bx\u000B=\u000B3\u000B; result = x; \u000Bvar\u000Bx\u000B=\u000B4\u000B; result = x; \u000Bvar\u000Bx\u000B=\u000B5\u000B; result = x;",
"type": "both",
"pass": true
},
"test/language/white-space/S7.2_A1.3_T1.js": {
"source": "\u000Cvar\u000Cx\u000C=\u000C1\u000C; result = x; \u000Cvar\u000Cx\u000C=\u000C2\u000C; result = x; \fvar\fx\f=\f3\f; result = x; \fvar\fx\f=\f4\f; result = x; \u000Cvar\fx\u000C=\f5\u000C; result = x;",
"type": "both",
"pass": true
},
"test/language/white-space/S7.2_A2.1_T1.js": {
"source": "//CHECK#1\nif (\"'\u0009str\u0009ing\u0009'\" !== \"\\u0009str\\u0009ing\\u0009\") {\n $ERROR('#1: eval(\"\\'\\\\u0009str\\\\u0009ing\\\\u0009\\'\") === \"\\\\u0009str\\\\u0009ing\\\\u0009\"');\n}\n\n//CHECK#2\nif (\"'\tstr\ting\t'\" !== \"\\tstr\\ting\\t\") {\n $ERROR('#2: eval(\"\\'\\\\tstr\\\\ting\\\\t\\'\") === \"\\\\tstr\\\\ting\\\\t\"');\n}",
"type": "both",
"pass": true
},
"test/language/white-space/S7.2_A2.2_T1.js": {
"source": "//CHECK#1\nif (\"'\u000Bstr\u000Bing\u000B'\" !== \"\\u000Bstr\\u000Bing\\u000B\") {\n $ERROR('#1: eval(\"\\'\\\\u000Bstr\\\\u000Bing\\\\u000B\\'\") === \"\\\\u000Bstr\\\\u000Bing\\\\u000B\"');\n}\n\n//CHECK#2\nif (\"'\u000Bstr\u000Bing\u000B'\" !== \"\\vstr\\ving\\v\") {\n $ERROR('#2: eval(\"\\'\\\\vstr\\\\ving\\\\v\\'\") === \"\\\\vstr\\\\ving\\\\v\"');\n}",
"type": "both",
"pass": true
},
"test/language/white-space/S7.2_A2.3_T1.js": {
"source": "//CHECK#1\nif (\"'\u000Cstr\u000Cing\u000C'\" !== \"\\u000Cstr\\u000Cing\\u000C\") {\n $ERROR('#1: eval(\"\\'\\\\u000Cstr\\\\u000Cing\\\\u000C\\'\") === \"\\\\u000Cstr\\\\u000Cing\\\\u000C\"');\n}\n\n//CHECK#2\nif (\"'\fstr\fing\f'\" !== \"\\fstr\\fing\\f\") {\n $ERROR('#2: eval(\"\\'\\\\fstr\\\\fing\\\\f\\'\") === \"\\\\fstr\\\\fing\\\\f\"');\n}",
"type": "both",
"pass": true
},
"test/language/white-space/S7.2_A3.1_T1.js": {
"source": "//CHECK#1\n//\u0009 single line \u0009 comment \u0009\n\n//CHECK#2\nvar x = 0;\n//\u0009 single line \u0009 comment \u0009 x = 1;\nif (x !== 0) {\n $ERROR('#1: var x = 0; eval(\"//\\u0009 single line \\u0009 comment \\u0009 x = 1;\"); x === 0. Actual: ' + (x));\n}",
"type": "both",
"pass": true
},
"test/language/white-space/S7.2_A3.2_T1.js": {
"source": "//CHECK#1\n//\u000B single line \u000B comment \u000B\n\n//CHECK#2\nvar x = 0;\n//\u000B single line \u000B comment \u000B x = 1;\nif (x !== 0) {\n $ERROR('#1: var x = 0; eval(\"//\\u000B single line \\u000B comment \\u000B x = 1;\"); x === 0. Actual: ' + (x));\n}",
"type": "both",
"pass": true
},
"test/language/white-space/S7.2_A3.3_T1.js": {
"source": "//CHECK#1\n//\u000C single line \u000C comment \u000C\n\n//CHECK#2\nvar x = 0;\n//\u000C single line \u000C comment \u000C x = 1;\nif (x !== 0) {\n $ERROR('#1: var x = 0; eval(\"//\\u000C single line \\u000C comment \\u000C x = 1;\"); x === 0. Actual: ' + (x));\n}",
"type": "both",
"pass": true
},
"test/language/white-space/S7.2_A3.5_T1.js": {
"source": "//CHECK#1\n//\u00A0 single line \u00A0 comment \u00A0\n\n//CHECK#2\nvar x = 0;\n//\u00A0 single line \u00A0 comment \u00A0 x = 1;\nif (x !== 0) {\n $ERROR('#1: var x = 0; eval(\"//\\u00A0 single line \\u00A0 comment \\u00A0 x = 1;\"); x === 0. Actual: ' + (x));\n}",
"type": "both",
"pass": true
},
"test/language/white-space/S7.2_A4.1_T1.js": {
"source": "// CHECK#1\n/*\u0009 multi line \u0009 comment \u0009*/\n\n//CHECK#2\nvar x = 0;\n/*\u0009 multi line \u0009 comment \u0009 x = 1;*/\nif (x !== 0) {\n $ERROR('#1: var x = 0; eval(\"/*\\u0009 multi line \\u0009 comment \\u0009 x = 1;*/\"); x === 0. Actual: ' + (x));\n}",
"type": "both",
"pass": true
},
"test/language/white-space/S7.2_A4.2_T1.js": {
"source": "// CHECK#1\n/*\u000B multi line \u000B comment \u000B*/\n\n//CHECK#2\nvar x = 0;\n/*\u000B multi line \u000B comment \u000B x = 1;*/\nif (x !== 0) {\n $ERROR('#1: var x = 0; eval(\"/*\\u000B multi line \\u000B comment \\u000B x = 1;*/\"); x === 0. Actual: ' + (x));\n}",
"type": "both",
"pass": true
},
"test/language/white-space/S7.2_A4.3_T1.js": {
"source": "// CHECK#1\n/*\u000C multi line \u000C comment \u000C*/\n\n//CHECK#2\nvar x = 0;\n/*\u000C multi line \u000C comment \u000C x = 1;*/\nif (x !== 0) {\n $ERROR('#1: var x = 0; eval(\"/*\\u000C multi line \\u000C comment \\u000C x = 1;*/\"); x === 0. Actual: ' + (x));\n}",
"type": "both",
"pass": true
},
"test/language/white-space/S7.2_A4.5_T1.js": {
"source": "// CHECK#1\n/*\u00A0 multi line \u00A0 comment \u00A0*/\n\n//CHECK#2\nvar x = 0;\n/*\u00A0 multi line \u00A0 comment \u00A0 x = 1;*/\nif (x !== 0) {\n $ERROR('#1: var x = 0; eval(\"/*\\u00A0 multi line \\u00A0 comment \\u00A0 x = 1;*/\"); x === 0. Actual: ' + (x));\n}",
"type": "both",
"pass": true
},
"test/language/white-space/S7.2_A1.4_T1.js": {
"source": "var result;\n\n// CHECK#1\n\u0020var\u0020x\u0020=\u00201\u0020; result = x;\nif (result !== 1) {\n $ERROR('#1: eval(\"\\u0020var\\u0020x\\u0020=\\u00201\\u0020; result = x;\"); result === 1;');\n}\n\n//CHECK#2\n\u0020var\u0020x\u0020=\u00202\u0020; result = x;\nif (result !== 2) {\n $ERROR('#2: eval(\"\\u0020var\\u0020x\\u0020=\\u00202\\u0020; result = x;\"); result === 2. Actual: ' + (result));\n}",
"type": "both",
"pass": true
},
"test/language/white-space/S7.2_A1.5_T1.js": {
"source": "var result;\n\n// CHECK#1\n\u00A0var\u00A0x\u00A0=\u00A01\u00A0; result = x;\nif (result !== 1) {\n $ERROR('#1: eval(\"\\u00A0var\\u00A0x\\u00A0=\\u00A01\\u00A0; result = x;\"); result === 1;');\n}\n\n//CHECK#2\n\u00A0var\u00A0x\u00A0=\u00A02\u00A0; result = x;\nif (result !== 2) {\n $ERROR('#2: eval(\"\\u00A0var\\u00A0x\\u00A0=\\u00A02\\u00A0; result = x;\"); result === 2. Actual: ' + (result));\n}",
"type": "both",
"pass": true
},
"test/language/white-space/S7.2_A2.5_T1.js": {
"source": "// CHECK#1\nif (\"'\u00A0str\u00A0ing\u00A0'\" !== \"\\u00A0str\\u00A0ing\\u00A0\") {\n $ERROR('#1: eval(\"\\'\\\\u00A0str\\\\u00A0ing\\\\u00A0\\'\") === \"\\\\u00A0str\\\\u00A0ing\\\\u00A0\"');\n}",
"type": "both",
"pass": true
},
"test/language/expressions/postfix-decrement/S11.3.2_A1.1_T1.js": {
"source": "var x = 1; x\u000A--",
"type": "both",
"pass": false
},
"test/language/expressions/postfix-decrement/S11.3.2_A1.1_T2.js": {
"source": "var x = 1; x\u000D--",
"type": "both",
"pass": false
},
"test/language/expressions/postfix-decrement/S11.3.2_A1.1_T3.js": {
"source": "var x = 1; x\u2028--",
"type": "both",
"pass": false
},
"test/language/expressions/postfix-decrement/S11.3.2_A1.1_T4.js": {
"source": "var x = 1; x\u2029--",
"type": "both",
"pass": false
},
"test/language/expressions/postfix-increment/S11.3.1_A1.1_T1.js": {
"source": "var x = 1; x\u000A++",
"type": "both",
"pass": false
},
"test/language/expressions/postfix-increment/S11.3.1_A1.1_T2.js": {
"source": "var x = 1; x\u000D++",
"type": "both",
"pass": false
},
"test/language/expressions/postfix-increment/S11.3.1_A1.1_T3.js": {
"source": "var x = 1; x\u2028++",
"type": "both",
"pass": false
},
"test/language/expressions/postfix-increment/S11.3.1_A1.1_T4.js": {
"source": "var x = 1; x\u2029++",
"type": "both",
"pass": false
},
"test/language/line-terminators/S7.3_A2.1_T1.js": {
"source": "'\u000Astr\u000Aing\u000A'",
"type": "both",
"pass": false
},
"test/language/line-terminators/S7.3_A2.2_T1.js": {
"source": "'\u000Dstr\u000Ding\u000D'",
"type": "both",
"pass": false
},
"test/language/line-terminators/S7.3_A2.3.js": {
"source": "'\u2028str\u2028ing\u2028'",
"type": "both",
"pass": false
},
"test/language/line-terminators/S7.3_A2.4.js": {
"source": "'\u2029str\u2029ing\u2029'",
"type": "both",
"pass": false
},
"test/language/line-terminators/S7.3_A3.1_T2.js": {
"source": "//\u000A single line comment",
"type": "both",
"pass": false
},
"test/language/line-terminators/S7.3_A3.2_T2.js": {
"source": "//\u000D single line comment",
"type": "both",
"pass": false
},
"test/language/line-terminators/S7.3_A3.3_T2.js": {
"source": "//\u2028 single line comment",
"type": "both",
"pass": false
},
"test/language/line-terminators/S7.3_A3.4_T2.js": {
"source": "//\u2029 single line comment",
"type": "both",
"pass": false
},
"test/language/statements/function/S13_A14_T2.js": {
"source": "function __func\\u0041(__arg){return __arg;}; __funcA",
"type": "both",
"pass": true
},
"test/language/statements/function/S13_A16_T2.js": {
"source": "function\nx\n(\n)\n{\n}\n;\n\nx();\n\nfunction y ( ) {};\n\ny();\n\nfunction\n\nz\n\n(\n\n)\n\n{\n \n}\n\n;\n\nz();\n\nfunction\u0009\u2029w(\u000C)\u00A0{\u000D}; w()",
"type": "both",
"pass": true
},
"test/language/arguments-object/10.5-1-s.js": {
"source": "(function fun() { arguments = 10 })(30);",
"type": "onlyStrict",
"pass": false
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment