1. 07 Apr, 2016 1 commit
    • mike's avatar
      [es6] Fix bug in pattern re-writing · 9acbca18
      mike authored
      As originally implemented, a SingleNameBinding within a BindingPattern
      was incorrectly interpreted as an assignment if an initializer was
      present and that initializer was itself an AssignmentExpresion.
      For example:
      
          let x;
          { let [x = y = 1] = []; }
          print(x); // expected: undefined, actual: 1
      
      Extend the heuristic that detects the "context" of a destructuring
      pattern to account for AssignmentExpressions within SingleNameBindings.
      
      BUG=v8:4891
      LOG=N
      R=adamk@chromium.org
      
      Review URL: https://codereview.chromium.org/1859423002
      
      Cr-Commit-Position: refs/heads/master@{#35334}
      9acbca18
  2. 10 Mar, 2016 1 commit
  3. 08 Mar, 2016 1 commit
  4. 18 Feb, 2016 1 commit
    • rossberg's avatar
      [es6] Implement for-of iterator finalization · cb1bf4af
      rossberg authored
      Implements iterator finalisation by desugaring for-of loops with an additional try-finally wrapper. See comment in parser.cc for details.
      
      Also improved some AST printing facilities while there.
      
      @Ross, I had to disable the bytecode generation test for for-of, because it got completely out of hand after this change (the new bytecode has 150+ lines). See the TODO that I assigned to you.
      
      Patch set 1 is WIP patch by Georg (http://crrev.com/1695583003), patch set 2 relative changes.
      
      @Georg, FYI, I changed the following:
      
      - Moved try-finally out of the loop body, for performance, and in order to be able to handle `continue` correctly.
      - Fixed scope management in ParseForStatement, which was the cause for the variable allocation failure.
      - Fixed pre-existing zone initialisation bug in rewriter, which caused the crashes.
      - Enabled all tests, adjusted a few others, added a couple more.
      
      BUG=v8:2214
      LOG=Y
      
      Review URL: https://codereview.chromium.org/1695393003
      
      Cr-Commit-Position: refs/heads/master@{#34111}
      cb1bf4af
  5. 08 Jan, 2016 1 commit
    • littledan's avatar
      Reland of Ship ES2015 sloppy-mode function hoisting, let, class (patchset #1... · 23235b5f
      littledan authored
      Reland of Ship ES2015 sloppy-mode function hoisting, let, class (patchset #1 id:1 of https://codereview.chromium.org/1565263002/ )
      
      Reason for revert:
      Crash fixed by https://codereview.chromium.org/1564923007
      
      Original issue's description:
      > Revert of Ship ES2015 sloppy-mode function hoisting, let, class (patchset #7 id:120001 of https://codereview.chromium.org/1551443002/ )
      >
      > Reason for revert:
      > Causes frequent crashes in Canary: chromium:537816
      >
      > Original issue's description:
      > > Ship ES2015 sloppy-mode function hoisting, let, class
      > >
      > > This patch doesn't ship all features of ES2015 variable/scoping
      > > changes, notably omitting the removal of legacy const. I think
      > > function hoisting, let and class in sloppy mode can stand to
      > > themselves as a package, and the legacy const change is much
      > > riskier and more likely to be reverted, so my intention is to
      > > pursue those as a separate, follow-on patch.
      > >
      > > R=adamk@chromium.org
      > > BUG=v8:4285,v8:3305
      > > LOG=Y
      > > CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel
      > >
      > > Committed: https://crrev.com/fcff8588a5a01587643d6c2507c7b882c78a2957
      > > Cr-Commit-Position: refs/heads/master@{#33133}
      >
      > TBR=adamk@chromium.org
      > # Not skipping CQ checks because original CL landed more than 1 days ago.
      > BUG=v8:4285,v8:3305,chromium:537816
      > LOG=Y
      >
      > Committed: https://crrev.com/adac5956c6216056a211cfaa460a00ac1500d8f8
      > Cr-Commit-Position: refs/heads/master@{#33162}
      
      TBR=adamk@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:4285,v8:3305,chromium:537816
      
      Review URL: https://codereview.chromium.org/1571793002
      
      Cr-Commit-Position: refs/heads/master@{#33189}
      23235b5f
  6. 07 Jan, 2016 1 commit
    • littledan's avatar
      Revert of Ship ES2015 sloppy-mode function hoisting, let, class (patchset #7... · adac5956
      littledan authored
      Revert of Ship ES2015 sloppy-mode function hoisting, let, class (patchset #7 id:120001 of https://codereview.chromium.org/1551443002/ )
      
      Reason for revert:
      Causes frequent crashes in Canary: chromium:537816
      
      Original issue's description:
      > Ship ES2015 sloppy-mode function hoisting, let, class
      >
      > This patch doesn't ship all features of ES2015 variable/scoping
      > changes, notably omitting the removal of legacy const. I think
      > function hoisting, let and class in sloppy mode can stand to
      > themselves as a package, and the legacy const change is much
      > riskier and more likely to be reverted, so my intention is to
      > pursue those as a separate, follow-on patch.
      >
      > R=adamk@chromium.org
      > BUG=v8:4285,v8:3305
      > LOG=Y
      > CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel
      >
      > Committed: https://crrev.com/fcff8588a5a01587643d6c2507c7b882c78a2957
      > Cr-Commit-Position: refs/heads/master@{#33133}
      
      TBR=adamk@chromium.org
      # Not skipping CQ checks because original CL landed more than 1 days ago.
      BUG=v8:4285,v8:3305,chromium:537816
      LOG=Y
      
      Review URL: https://codereview.chromium.org/1565263002
      
      Cr-Commit-Position: refs/heads/master@{#33162}
      adac5956
  7. 06 Jan, 2016 1 commit
    • littledan's avatar
      Ship ES2015 sloppy-mode function hoisting, let, class · fcff8588
      littledan authored
      This patch doesn't ship all features of ES2015 variable/scoping
      changes, notably omitting the removal of legacy const. I think
      function hoisting, let and class in sloppy mode can stand to
      themselves as a package, and the legacy const change is much
      riskier and more likely to be reverted, so my intention is to
      pursue those as a separate, follow-on patch.
      
      R=adamk@chromium.org
      BUG=v8:4285,v8:3305
      LOG=Y
      CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel
      
      Review URL: https://codereview.chromium.org/1551443002
      
      Cr-Commit-Position: refs/heads/master@{#33133}
      fcff8588
  8. 12 Dec, 2015 1 commit
  9. 18 Nov, 2015 1 commit
  10. 05 Nov, 2015 3 commits
  11. 04 Nov, 2015 3 commits
  12. 06 Oct, 2015 1 commit
    • littledan's avatar
      Destructuring array without initializer throws an exception · 2e7077e0
      littledan authored
      Previously, cases like
        var [foo]
      led to a parser crash because the parser tried to do something with
      the initializer, which was not syntactically present.
      
      This patch fixes the parser issue (implicitly creating an undefined
      initializer) and inserts a check for array destructuring that the
      right-hand side is coercible to an object, so it can have iterator
      methods called on it safely.
      
      BUG=v8:4462
      LOG=Y
      R=adamk
      
      Review URL: https://codereview.chromium.org/1384413002
      
      Cr-Commit-Position: refs/heads/master@{#31128}
      2e7077e0
  13. 05 Oct, 2015 1 commit
    • littledan's avatar
      Fix legacy const for-of/in destructuring · 38465598
      littledan authored
      Previously, using legacy const in for-of/in loops led to a check-fail
      in the parser. This was due to the fact that the destructuring bind
      led to an undefined initialization to undefined in the parser, which
      caused the for loop code to go down a strange path. This patch
      eliminates the undefined initialization in variables declared in
      for-in/of loops, so that that path is not used and the error is
      fixed.
      
      BUG=v8:4461
      LOG=Y
      R=adamk
      
      Review URL: https://codereview.chromium.org/1385913003
      
      Cr-Commit-Position: refs/heads/master@{#31117}
      38465598
  14. 01 Oct, 2015 1 commit
    • rossberg's avatar
      [es6] Scoping & initialization for var shadowing non-simple parameters · 2c2848dc
      rossberg authored
      Var-bindings may shadow parameters from a non-simple parameter list. When that happens: they create separate bindings, but are initialised with the respective parameter value. Thus:
      
      (function(x, f = () => x) { var x; var y = x; x = 2; return [x, y, f()] })(1) -->  [2, 1, 1]
      
      This CL implements that by inserting a suitable assignment for every shadwowing var-variable (e.g., x = outer_x above) at the beginning of the function's body block.
      
      R=adamk@chromium.org
      BUG=v8:4440,v8:811
      LOG=N
      
      Review URL: https://codereview.chromium.org/1371333004
      
      Cr-Commit-Position: refs/heads/master@{#31042}
      2c2848dc
  15. 30 Sep, 2015 1 commit
  16. 16 Sep, 2015 1 commit
  17. 26 Aug, 2015 1 commit
  18. 25 Aug, 2015 1 commit
  19. 17 Aug, 2015 1 commit
  20. 07 Aug, 2015 2 commits
  21. 05 Aug, 2015 2 commits
    • adamk's avatar
      Delete --harmony-computed-property-names flag · b7726c44
      adamk authored
      It was shipped in V8 4.4.
      
      Review URL: https://codereview.chromium.org/1273543002
      
      Cr-Commit-Position: refs/heads/master@{#30038}
      b7726c44
    • rossberg's avatar
      [es6] Implement proper TDZ for parameters · 4273f66e
      rossberg authored
      Previously, examples like (({a = x}, x) => {})({}, 0) did not throw a ReferenceError like they should. This CL
      
      - Splits up DeclareFormalParameters such that the formals can be recorded first and declared later.
      
      - Declaration then takes the complete parameter list into account. If it is not simple, temporaries are introduced for all parameters.
      
      - BuildParameterInitializationBlock desugars all parameters from non-simple lists into let-bindings.
      
      - Refactored Pre/ParserFormalParameters, so that the arity information is no longer duplicated in Parser.
      
      - Rest is currently handled specially, until rest-via-destructuring has landed.
      
      R=adamk@chromium.org, littledan@chromium.org
      BUG=v8:811
      LOG=N
      
      Review URL: https://codereview.chromium.org/1259283002
      
      Cr-Commit-Position: refs/heads/master@{#30025}
      4273f66e
  22. 20 Jul, 2015 1 commit
  23. 15 Jul, 2015 1 commit
  24. 01 Jul, 2015 1 commit
  25. 22 Jun, 2015 3 commits
  26. 21 May, 2015 2 commits
    • dslomov's avatar
      [destructuring] Grand for statement parsing unification. · 7ffdb519
      dslomov authored
      Also support patterns in ``for (var p in/of ...)``
      
      This CL extends the rewriting we used to do for ``for (let p in/of...)`` to
      ``for (var p in/of ...)``. For all for..in/of loop declaring variable,
      we rewrite
         for (var/let/const pattern in/of e) b
      into
         for (x' in/of e) { var/let/const pattern = e; b }
      
      This adds a small complication for debugger: for a statement
         for (var v in/of e) ...
      we used to have
         var v;
         for (v in/of e) ...
      and there was a separate breakpoint on ``var v`` line.
      This breakpoint is actually useless since it is immediately followed by
      a breakpoint on evaluation of ``e``, so this CL removes that breakpoint
      location.
      
      Similiraly, for let, it used to be that
        for (let v in/of e) ...
      became
        for (x' in/of e) { let v; v  = x'; ... }
      ``let v``generetaed a useless breakpoint (with the location at the
      loop's head. This CL removes that breakpoint as well.
      
      R=arv@chromium.org,rossberg@chromium.org
      BUG=v8:811
      LOG=N
      
      Review URL: https://codereview.chromium.org/1149043005
      
      Cr-Commit-Position: refs/heads/master@{#28565}
      7ffdb519
    • dslomov's avatar
      [destructuring] Implement pattern matching in lexcal for-of/for-in. · 8925b848
      dslomov authored
      R=arv@chromium.org,rossberg@chromium.org
      BUG=v8:811
      LOG=N
      
      Review URL: https://codereview.chromium.org/1152503002
      
      Cr-Commit-Position: refs/heads/master@{#28547}
      8925b848
  27. 20 May, 2015 2 commits
  28. 19 May, 2015 2 commits
  29. 18 May, 2015 1 commit