• neis's avatar
    [parsing] Fix maybe-assigned for loop variables. · a33fcd66
    neis authored
    Due to hoisting, the value of a 'var'-declared variable may actually change even
    if the code contains only the "initial" assignment, namely when that assignment
    occurs inside a loop.  For example:
    
      let i = 10;
      do { var x = i } while (i--):
    
    As a simple and very conservative approximation of this, we explicitly mark
    as maybe-assigned any non-lexical variable whose "declaration" does not
    syntactically occur in the function scope.  (In the example above, it
    occurs in a block scope.)
    
    BUG=v8:5636
    
    Review-Url: https://codereview.chromium.org/2673403003
    Cr-Commit-Position: refs/heads/master@{#42989}
    a33fcd66
preparser.cc 12.9 KB