109 Commits

Author SHA1 Message Date
Moti Zilberman
9fc51d6292 Consolidate contiguous var declarations in destructuring transform (#4690)
* Consolidate contiguous var declarations in destructuring transform

Fixes #3081.

* Simplify var node coalescing in es2015-destructuring

* Revert "Simplify var node coalescing in es2015-destructuring"

This reverts commit 15cb373f0726f68225f7080a7ae206a63af174ee.

* More careful condition for var coalescing in es2015-destructuring
2016-10-14 11:51:22 -04:00
Dan Harper
33eb56ab09 fix error when constructor default arg refers to own static property or self (#4666)
(closes #4253)
(closes #4442)
2016-10-05 17:52:42 -04:00
Moti Zilberman
0366d1ad19 Handle side effects correctly in rest params index expressions (#4348) (#4674) 2016-10-05 21:59:41 +02:00
Moti Zilberman
12d2673038 Add test for rest params name collision with top-level name (#4333) (#4673) 2016-10-05 10:15:04 -04:00
Henry Zhu
e50b3c890f v6.17.0 2016-10-01 15:23:18 -04:00
Daniel Tschinder
16716ea3de Fix rest parameters with flow type casting (#4636)
Do not skip TypeCastExpressions when finding referenced identifiers as the
type cast contains valid non flow code that we need to visit.
2016-10-01 12:58:14 -04:00
Henry Zhu
6d22f258db v6.16.0 2016-09-28 15:38:45 -04:00
Justin Ridgewell
c2ed9de7fb Flip default parameter template (#4515)
* Flip default parameter template

YMMV, I saved ~10b on a 2kb library. Not noticeable at the small scale, by why not do it anyway?

I've (unscientifically) found that flipping the default parameter conditional yields better gzip results. I think this is due to the slightly longer string it can now repeatedly match:

```js
// old
var param = arguments.length <= 0 || void 0 === arguments[0] ? null : arguments[0]
--------------------------------------------------------------^

// new
var param = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null
------------------------------------------------------------------------^
```

Though it's entirely likely gzip will also choose up to the index of the arguments if you many default parameters at different indexes.

* Update tests
2016-09-25 14:05:53 -07:00
Daniel Tschinder
590ad4d24f Replace phabricator tickets with github ones in code comments (#4519) 2016-09-17 22:50:02 -04:00
Daniel Tschinder
10cd6519d8 Fix class inheritance in IE <=10 (T3041) (#3527)
* Fix class inheritance in IE9 & IE10 (T3041)

Internet Explorer 9&10 do not support __proto__ at all, don't have
Object.setPrototypeOf(), but have Object.getPrototypeOf().

Because of this setting the prototype is not possible, which makes the
babelHelpers.inherits() function to set __proto__ although not supported.

Afterwards Object.getPrototypeOf() is used, but this one is not
respecting the "custom" property __proto__ that we set.

The solution is to check for __proto__ first and afterwards fallback to
Object.getPrototypeOf().

* Do the same logic in babel-helper-replace-supers

* Fix tests

* Extract creation of prototype nodes to small helper
2016-08-23 15:08:44 -04:00
Henry Zhu
6e58954bce v6.11.4 2016-07-19 21:59:53 -04:00
Justin Ridgewell
9a6890c92f Default parameters cleanup (#3574)
* Remove buildDefaultParamAssign

This seems to have been
[added](https://github.com/babel/babel/commit/4b85b05839017ab2abc03ba2d1
e875a63f002890) in v5.5.4 to address
[#1690](https://phabricator.babeljs.io/T1690). It [became
“dead”](https://github.com/babel/babel/blob/v6.0.0/packages/babel-core/t
est/fixtures/transformation/es6.parameters/default-before-last/expected.
js) (as far as I can tell) in the [v6.0.0
commit](https://github.com/babel/babel/commit/ae7d5367f1c3d438667242d692
5db024f875fccd).

Either way, this code is never executed.

- `pushDefNode` is only called when the param is a default param.
- `buildDefaultParamAssign` (which is inside `pushDefNode`) only runs
of the param index is less than or equals to the lastNonDefaultParam.
AKA, is this param before any non-defaulting params.

Which is a contradiction.

* Small optimization

No need to check if we need an iife if we already know we need one.
2016-07-18 11:03:59 -04:00
Henry Zhu
7076c675d9 v6.11.3 2016-07-12 22:33:58 -04:00
Justin Ridgewell
823ffbd87c Fix error in rest parameter length optimization (#3573)
If there aren’t enough arguments to get to the offset index, we would
return an negative length.
2016-07-12 21:12:45 -04:00
Logan Smyth
231f27f170 Fix non-unique 'ref' binding name - fixes T7468 2016-06-28 19:16:44 -07:00
Henry Zhu
cf6304a34b v6.9.0 2016-05-17 14:49:17 -04:00
Jay Phelps
330071e59d also visit ClassProperty's for rest param deopt check, fixes #T7311 (#3481) 2016-05-13 17:18:14 -04:00
Henry Zhu
05bf216339 v6.8.0 2016-05-02 19:43:49 -04:00
Henry Zhu
4c23b01798 change plugins to use babel-runtime 6 2016-04-24 20:06:23 -04:00
Amjad Masad
3d5969ecff v6.7.0 2016-03-08 16:52:45 -08:00
Amjad Masad
b7465843dd Merge pull request #3375 from jmm/parameters-rest-optimization-errors
Fix errors in parameters rest transformation [T7138]
2016-03-07 11:58:15 -08:00
Henry Zhu
57ef6a2b6a v6.6.5 2016-03-04 18:16:17 -05:00
Amjad Masad
3667527d04 Revert "Remove flow"
This reverts commit 2827ff6b01dcce69e9d3c0402e96b52b3a2a47ee.
2016-03-03 14:49:20 -08:00
Henry Zhu
39a8f5b796 v6.6.4 2016-03-02 16:29:17 -05:00
Sam Goldman
2827ff6b01 Remove flow 2016-03-01 22:33:30 -08:00
Henry Zhu
f34e6518ff v6.6.0 2016-02-29 16:12:12 -05:00
Jesse McCarthy
49e30f49bc Fix rest optimization errors. 2016-02-25 18:42:52 -05:00
Jesse McCarthy
8419be1afc Add postfix update expression fixtures.
(Failing.)
2016-02-25 17:11:19 -05:00
Jesse McCarthy
5f98d22b6d Add for-of fixture.
(Failing.)
2016-02-25 17:11:19 -05:00
Jesse McCarthy
1c304965e7 Add rest loop position optimization fixture.
(Failing.)

With destructuring assignment to an element.

This makes the function ineligible for `arguments` optimization, while
remaining eligible for loop position optimization.
2016-02-25 17:11:19 -05:00
Victor Felder
183fbab967 Fix some rest optimization errors.
Commit message edited by @jmm.
2016-02-25 17:11:19 -05:00
Jesse McCarthy
6ca07974c9 Add array destruct w/o [rest[0]] on RHS fixture.
(Failing.)
2016-02-25 17:11:19 -05:00
Jesse McCarthy
0be3a58dd2 Add expected fixtures for new actuals.
(Failing.)
2016-02-25 17:11:18 -05:00
Ben Newman
a82bf11e2a Add rest deoptimization fixtures.
(Failing.)

Commit message edited by @jmm.
2016-02-25 17:11:18 -05:00
Jesse McCarthy
3b8c5b7620 Merge pull request #3249 from jmm/rest-assign-el
Fix assignment to rest param element AST error.

Fix T6932.
2016-02-19 08:47:17 -05:00
Henry Zhu
26a3fdc3df Merge pull request #3336 from erikdesjardins/async-arrow-rest
Fix T3077 (incorrect _arguments for async arrow functions with rest params)
2016-02-17 15:26:58 -05:00
Sebastian McKenzie
5b89849f43 Switch to klint, fix some lint rules 2016-02-14 23:25:14 +00:00
Erik
27a132a9cb Add test for T3077 (Incorrect rest operator behavior for async arrow functions) 2016-02-09 13:13:28 -05:00
Henry Zhu
f9f8ad6eff v6.5.0 2016-02-06 19:06:41 -05:00
Henry Zhu
e152e7044e v6.4.5 2016-01-19 18:02:31 -05:00
Amjad Masad
d11bcae496 Merge pull request #3263 from jmm/rest-new-passing-fixtures
Increase `parameters/rest` transform test coverage
2016-01-17 14:00:26 -08:00
Jesse McCarthy
19937573a6 Fix assignment to rest param element. 2016-01-14 13:21:47 -05:00
Jesse McCarthy
49728be8b6 Test for no-opt of assign to rest param element.
That is, do not attempt to optimize assignments as opposed to reads.

(Failing.)
2016-01-14 13:21:40 -05:00
Jesse McCarthy
857675c99c Add fixtures to exercise shadow conditional. 2016-01-13 17:37:29 -05:00
Jesse McCarthy
41066f55ea Add fixtures for deopt due to arguments. 2016-01-13 17:37:23 -05:00
Jesse McCarthy
b17965ab8b Improve comments. 2016-01-13 17:24:06 -05:00
Jesse McCarthy
059d7123db Remove unnecessary else. 2016-01-13 17:24:06 -05:00
Jesse McCarthy
e4044062c3 Remove unnecessary length check & nesting. 2016-01-13 17:24:06 -05:00
Jesse McCarthy
4c69f1cda5 Replace func expr with arrow. 2016-01-13 17:24:06 -05:00
Jesse McCarthy
afd98ebd2a Remove unnecessary literal return value. 2016-01-13 17:24:06 -05:00