• Sathya Gunasekaran's avatar
    [parser] Provide better error when destructuring callable · c805d5e3
    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: 's avatarAdam Klein <adamk@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#47025}
    c805d5e3
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
docs Loading commit data...
gni Loading commit data...
gypfiles 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...
.editorconfig Loading commit data...
.gitignore Loading commit data...
.gn 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...
ChangeLog Loading commit data...
DEPS 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...
Makefile Loading commit data...
Makefile.android Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...
snapshot_toolchain.gni Loading commit data...