- 09 Jan, 2019 1 commit
-
-
Leszek Swirski authored
Emit a single destructuring assignment for destructuring declarations, which can be desugared by the bytecode generator. This allows us to remove destructuring desugaring from the parser (specifically, the pattern rewriter) entirely. The pattern "rewriter" is now only responsible for walking the destructuring pattern to declare variables, mark them assigned, and potentially rewrite scopes for the edge case of parameters with a sloppy eval. Note that since the rewriter is no longer rewriting, we have to flip the VariableProxy copying logic for var re-lookup, so that we now pass the new VariableProxy to the variable declaration and leave the original unresolved (rather than passing the original through and rewriting to a new unresolved VariableProxy). This change does have some effect on breakpoint locations, due to some of the available information changing between the parser and bytecode generator, however the new locations appear to be more consistent between assignments and declarations. Change-Id: I3a58dd0a387d2bfb8e5e9e22dde0acc5f440cb82 Reviewed-on: https://chromium-review.googlesource.com/c/1382462 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Adam Klein <adamk@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#58670}
-
- 26 Oct, 2017 1 commit
-
-
Clemens Hammacher authored
This way, we can also check the return code of d8. We currently have a bug (6981) which makes failing tests not being detected, even though the failure message is (sometimes) being printed. After this refactoring, we can write tests for our mjsunit test functions. R=machenbach@chromium.org Bug: v8:6981 Change-Id: I0aa0abcb0f9a4f622a1e1d1a4d826da1e6eb4f07 Reviewed-on: https://chromium-review.googlesource.com/737991Reviewed-by: Michael Achenbach <machenbach@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#48951}
-
- 01 Aug, 2017 1 commit
-
-
Sathya Gunasekaran authored
The patch changes CallPrinter's AST traversal to continue even after the first positive match for an AST node. This helps us check for the subsequent GetIterator AST node in case of destructuring. We can not differentiate between the function call failing and the GetIterator failing based on source position info. This would involve runtime checks costing performance. Instead of providing an incorrect error, we provide both the possiblities to user and allow them to disambiguate. Previously, d8> function f() { return 5; } undefined d8> var [a] = f(); (d8):1: TypeError: f is not a function var [a] = f(); ^ TypeError: f is not a function at (d8):1:11 Now, d8> function f() { return 5; } undefined d8> var [a] = f(); (d8):1: TypeError: f is not a function or its return value is not iterable var [a] = f(); ^ TypeError: f is not a function or its return value is not iterable at (d8):1:11 Bug: v8:6616, v8:6513 Change-Id: I3d6427f10cae54951b0ad0e5ddcbe802bb7191c1 Reviewed-on: https://chromium-review.googlesource.com/594894 Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#47025}
-
- 06 Jul, 2017 1 commit
-
-
Sathya Gunasekaran authored
Print the object that is being destructured and update the error message. Previously, d8> var [a] = {} (d8):1: TypeError: [Symbol.iterator] is not a function Now, d8> var [a] = {} (d8):1: TypeError: {} is not iterable Bug: v8:6513, v8:5532 Change-Id: I5cbfe7c7e20632bce1a48bd38a1b0c98d0ff0660 Reviewed-on: https://chromium-review.googlesource.com/557370 Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by: Adam Klein <adamk@chromium.org> Reviewed-by: Caitlin Potter <caitp@igalia.com> Cr-Commit-Position: refs/heads/master@{#46457}
-
- 11 Apr, 2017 1 commit
-
-
Caitlin Potter authored
Fix error message printed by Runtime_ThrowCalledNonCallable. As noted on the bug, this has a slight problem in that it will always print that "asyncIterator" was not callable for GetIterator with an async IteratorType, though it may be referring to a different call. This issue is present regardless of the change I introduced to perform this desugaring in the BytecodeGenerator. BUG=v8:6187 R=adamk@chromium.org, verwaest@chromium.org Change-Id: I2077b7cd5976d9d9ba044f0dff44ee8c312d1263 Reviewed-on: https://chromium-review.googlesource.com/470806Reviewed-by: Adam Klein <adamk@chromium.org> Commit-Queue: Caitlin Potter <caitp@igalia.com> Cr-Commit-Position: refs/heads/master@{#44543}
-