v8/test/message
Leszek Swirski ef2df57aa5 Reland "[destructuring] Elide coercible check for simple keys"
This is a reland of 1fba044154
Chromium expectation tests have been disabled, and will be enabled

Original change's description:
> [destructuring] Elide coercible check for simple keys
>
> Simple object destructuring, such as `let {a,b} = o`, is less efficient
> than the equivalent assignments `let a = o.a; let b = o.b`. This is
> because it does a nil check of `o` before the assignments. However, this
> nil check is not strictly necessary for simple (i.e. non-computed) names,
> as there will be an equivalent nil check on the first access to o in
> `o.a`. For computed names the computation is unfortunately obervable.
>
> So, we can elide the nil check when the first property (if any) of the
> destructuring target is a non-computed name. This messes a bit with our
> error messages, so we re-use the CallPrinter to also find destructuring
> assignment based errors, and fiddle with the error message there. As
> a side-effect, we also get out the object name in the AST, so we can
> output a slightly nicer error message.
>
> Change-Id: Iafa858e27ed771a146cd3ba57903cc73bb46951d
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1773254
> Reviewed-by: Leszek Swirski <leszeks@chromium.org>
> Reviewed-by: Toon Verwaest <verwaest@chromium.org>
> Commit-Queue: Leszek Swirski <leszeks@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#63453}

TBR=verwaest@chromium.org

Bug: chromium:999473
Change-Id: Ib0b2e4be433c50521ba1722e1c06b672bfefa405
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1777702
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63477}
2019-08-30 10:51:49 +00:00
..
fail Reland "[destructuring] Elide coercible check for simple keys" 2019-08-30 10:51:49 +00:00
mjsunit [test] Fix {assertNotSame} in mjsunit test harness. 2019-07-03 15:20:57 +00:00
regress/fail [scanner] fix bug with reporting invalid numeric separator 2019-08-08 16:36:36 +00:00
asm-assignment-undeclared.js [asm.js] Remove deprecated --fast-validate-asm flag. 2017-05-04 13:52:39 +00:00
asm-assignment-undeclared.out [asm.js] Fix assignment with undeclared target. 2017-03-30 08:36:17 +00:00
asm-function-mismatch-def.js [asm.js] Remove deprecated --fast-validate-asm flag. 2017-05-04 13:52:39 +00:00
asm-function-mismatch-def.out [asm.js] Test and fix function type checking. 2017-04-07 12:10:45 +00:00
asm-function-mismatch-use.js [asm.js] Remove deprecated --fast-validate-asm flag. 2017-05-04 13:52:39 +00:00
asm-function-mismatch-use.out [asm.js] Test and fix function type checking. 2017-04-07 12:10:45 +00:00
asm-function-redefined.js [asm.js] Remove deprecated --fast-validate-asm flag. 2017-05-04 13:52:39 +00:00
asm-function-redefined.out [asm.js] Test and fix function name collisions. 2017-04-07 09:03:11 +00:00
asm-function-undefined.js [asm.js] Remove deprecated --fast-validate-asm flag. 2017-05-04 13:52:39 +00:00
asm-function-undefined.out [asm.js] Fix handling of bogus code after export statement. 2019-02-21 14:37:37 +00:00
asm-function-variable-collision.js [asm.js] Remove deprecated --fast-validate-asm flag. 2017-05-04 13:52:39 +00:00
asm-function-variable-collision.out [asm.js] Test and fix function name collisions. 2017-04-07 09:03:11 +00:00
asm-import-wrong-annotation.js [asm.js] Fix validation failure in module variable import. 2017-05-05 11:39:06 +00:00
asm-import-wrong-annotation.out [asm.js] Fix validation failure in module variable import. 2017-05-05 11:39:06 +00:00
asm-import-wrong-object.js [asm.js] Fix validation failure in module variable import. 2017-05-05 11:39:06 +00:00
asm-import-wrong-object.out [asm.js] Fix validation failure in module variable import. 2017-05-05 11:39:06 +00:00
asm-linking-bogus-heap.js [asm.js] Report module linking failures to the console. 2017-05-19 11:31:12 +00:00
asm-linking-bogus-heap.out Reland "[asmjs] Properly validate asm.js heap sizes" 2018-08-21 09:00:04 +00:00
asm-linking-bogus-stdlib.js [asm.js] Report module linking failures to the console. 2017-05-19 11:31:12 +00:00
asm-linking-bogus-stdlib.out [asm.js] Report module linking failures to the console. 2017-05-19 11:31:12 +00:00
asm-linking-missing-heap.js [asm.js] Report module linking failures to the console. 2017-05-19 11:31:12 +00:00
asm-linking-missing-heap.out [asm.js] Report module linking failures to the console. 2017-05-19 11:31:12 +00:00
asm-missing-parameter-annotation.js [asm.js] Remove deprecated --fast-validate-asm flag. 2017-05-04 13:52:39 +00:00
asm-missing-parameter-annotation.out [asm.js] Make validation error messages consistent. 2017-03-29 20:55:12 +00:00
asm-missing-return-annotation.js [asm.js] Remove deprecated --fast-validate-asm flag. 2017-05-04 13:52:39 +00:00
asm-missing-return-annotation.out [asm.js] Make validation error messages consistent. 2017-03-29 20:55:12 +00:00
asm-table-mismatch-def.js [asm.js] Remove deprecated --fast-validate-asm flag. 2017-05-04 13:52:39 +00:00
asm-table-mismatch-def.out [asm.js] Test and fix function table type checks. 2017-04-10 08:47:34 +00:00
asm-table-mismatch-use.js [asm.js] Remove deprecated --fast-validate-asm flag. 2017-05-04 13:52:39 +00:00
asm-table-mismatch-use.out [asm.js] Test and fix function table type checks. 2017-04-10 08:47:34 +00:00
asm-table-redefined.js [asm.js] Remove deprecated --fast-validate-asm flag. 2017-05-04 13:52:39 +00:00
asm-table-redefined.out [asm.js] Test and fix function table definition failures. 2017-04-11 16:46:26 +00:00
asm-table-undefined.js [asm.js] Remove deprecated --fast-validate-asm flag. 2017-05-04 13:52:39 +00:00
asm-table-undefined.out [asm.js] Fix handling of bogus code after export statement. 2019-02-21 14:37:37 +00:00
asm-table-variable-collision.js [asm.js] Remove deprecated --fast-validate-asm flag. 2017-05-04 13:52:39 +00:00
asm-table-variable-collision.out [asm.js] Test and fix function table definition failures. 2017-04-11 16:46:26 +00:00
BUILD.gn [build] Add data deps for d8 test suites 2018-03-26 13:44:58 +00:00
empty.js [platform] Allow to memory-map empty files 2019-01-21 16:02:47 +00:00
empty.out [platform] Allow to memory-map empty files 2019-01-21 16:02:47 +00:00
message.status [test] Don't test jitless without embedded-builtins 2019-02-26 14:33:01 +00:00
non-use-strict-hex-escape.js
non-use-strict-hex-escape.out
non-use-strict-octal-escape.js
non-use-strict-octal-escape.out
non-use-strict-uhex-escape.js
non-use-strict-uhex-escape.out
nonstrict-arguments.js
nonstrict-arguments.out
nonstrict-eval.js
nonstrict-eval.out
nonstrict-with.js
nonstrict-with.out
object-binding-pattern-await-computed-name.js [parser] classify binding pattern errors when parsing await expression 2017-12-09 16:29:23 +00:00
object-binding-pattern-await-computed-name.out [parser] classify binding pattern errors when parsing await expression 2017-12-09 16:29:23 +00:00
README.md Remove always-true --harmony-function-tostring runtime flag 2018-10-03 15:04:16 +00:00
strict-octal-indirect-regexp.js
strict-octal-indirect-regexp.out
strict-octal-regexp.js
strict-octal-regexp.out
testcfg.py [test] Remove module pragma in favor of .mjs 2019-06-27 13:25:48 +00:00
try-catch-finally-no-message.js
try-catch-finally-no-message.out
try-catch-finally-return-in-finally.js
try-catch-finally-return-in-finally.out
try-finally-return-in-finally.js
try-finally-return-in-finally.out
wasm-finish-compilation.js [wasm] merge js constants file in module-builder 2019-01-30 22:10:34 +00:00
wasm-finish-compilation.out Reland "Reland "[d8][wasm] Test wasm compilation completion"" 2018-04-10 08:24:27 +00:00
wasm-function-name-async.js [wasm] merge js constants file in module-builder 2019-01-30 22:10:34 +00:00
wasm-function-name-async.out [wasm] use standard WebAssembly stack trace format 2019-06-11 18:03:24 +00:00
wasm-function-name-streaming.js [wasm] Load module name during streaming compile 2018-03-16 09:01:20 +00:00
wasm-function-name-streaming.out [wasm] use standard WebAssembly stack trace format 2019-06-11 18:03:24 +00:00
wasm-module-and-function-name-async.js [wasm] merge js constants file in module-builder 2019-01-30 22:10:34 +00:00
wasm-module-and-function-name-async.out [wasm] use standard WebAssembly stack trace format 2019-06-11 18:03:24 +00:00
wasm-module-and-function-name-streaming.js [wasm] Load module name during streaming compile 2018-03-16 09:01:20 +00:00
wasm-module-and-function-name-streaming.out [wasm] use standard WebAssembly stack trace format 2019-06-11 18:03:24 +00:00
wasm-module-name-async.js [wasm] merge js constants file in module-builder 2019-01-30 22:10:34 +00:00
wasm-module-name-async.out [wasm] use standard WebAssembly stack trace format 2019-06-11 18:03:24 +00:00
wasm-module-name-streaming.js [wasm] Load module name during streaming compile 2018-03-16 09:01:20 +00:00
wasm-module-name-streaming.out [wasm] use standard WebAssembly stack trace format 2019-06-11 18:03:24 +00:00
wasm-no-name-async.js [wasm] merge js constants file in module-builder 2019-01-30 22:10:34 +00:00
wasm-no-name-async.out [wasm] use standard WebAssembly stack trace format 2019-06-11 18:03:24 +00:00
wasm-no-name-streaming.js [wasm] Load module name during streaming compile 2018-03-16 09:01:20 +00:00
wasm-no-name-streaming.out [wasm] use standard WebAssembly stack trace format 2019-06-11 18:03:24 +00:00
wasm-trace-memory-interpreted.js [flags] s/wasm_trace/trace_wasm/g in flags 2018-08-29 08:49:09 +00:00
wasm-trace-memory-interpreted.out [wasm] Make the output of --wasm-trace-memory more understandable 2018-07-19 09:49:36 +00:00
wasm-trace-memory-liftoff.js [flags] s/wasm_trace/trace_wasm/g in flags 2018-08-29 08:49:09 +00:00
wasm-trace-memory-liftoff.out [wasm] Make the output of --wasm-trace-memory more understandable 2018-07-19 09:49:36 +00:00
wasm-trace-memory.js [wasm] merge js constants file in module-builder 2019-01-30 22:10:34 +00:00
wasm-trace-memory.out [wasm] Make the output of --wasm-trace-memory more understandable 2018-07-19 09:49:36 +00:00

JavaScript tests with expected output

Tests in test/message pass if the output matches the expected output. Message tests are particularly useful when checking for exact error messages.

Tests and their expected output must have the same filename, with the .js and .out extension.

foo.js
foo.out

All tests must end with an exception. The test runner does not handle output from multiple runs, e.g., --stress-opt. Without an exception, the output will be generated several times and the comparison will fail.

You can use a regex in the expected output instead of the exact path:

*%(basename)s:7: SyntaxError: Detected cycle while resolving name 'a'

Empty lines are ignored in the comparison, but whitespaces are not.

Exact details of the test runner are in testcfg.py.