• Sathya Gunasekaran's avatar
    [callprinter] Correctly point to the incorrect spread arg · 1d0693e2
    Sathya Gunasekaran authored
    The source position is set to the function call (console.log) not the
    spread (..x), in the bytecode generator, as the spread operation is
    done as part of the CallWithSpread bytecode.
    
    The CallPrinter stops at the function call and doesn't look at the
    arguments as well (in CallPrinter::VisitCall) to see if the error is
    from an incorrect spread operation.
    
    
    With this patch, we pass some state to the CallPrinter in the
    CallWithSpread error case and check that in CallPrinter::VisitCall
    before returning.
    
    For the given source string:
    ```
    x = undefined;
    console.log(1, ...x);
    ```
    
    Previously, the error was -
    
    ```
    test.js:2: TypeError: console.log is not iterable (cannot read property Symbol(Symbol.iterator))
    console.log(1, ...x);
            ^
    TypeError: console.log is not iterable (cannot read property Symbol(Symbol.iterator))
        at test.js:2:9
    ```
    
    
    Now, the error is -
    
    ```
    _test.js:2: TypeError: x is not iterable (cannot read property undefined)
    console.log(1, ...x);
                      ^
    TypeError: x is not iterable (cannot read property undefined)
        at _test.js:2:9
    ```
    
    Bug: v8:10038
    Change-Id: I199de9997f1d949c6f9b7b4f41d51f422b8b5131
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2037431Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
    Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
    Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#66131}
    1d0693e2
Name
Last commit
Last update
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.flake8 Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
COMMON_OWNERS Loading commit data...
DEPS Loading commit data...
ENG_REVIEW_OWNERS Loading commit data...
INFRA_OWNERS Loading commit data...
INTL_OWNERS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
MIPS_OWNERS Loading commit data...
OWNERS Loading commit data...
PPC_OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...