Skip to content

Wrap wrapNativeSuper helpers in redefining functions for better tree-…#7188

Merged
Andarist merged 1 commit intobabel:masterfrom
Andarist:tweak/wrap-native-super
Mar 14, 2018
Merged

Wrap wrapNativeSuper helpers in redefining functions for better tree-…#7188
Andarist merged 1 commit intobabel:masterfrom
Andarist:tweak/wrap-native-super

Conversation

@Andarist
Copy link
Copy Markdown
Member

@Andarist Andarist commented Jan 9, 2018

…shakeability

Q                       A
Fixed Issues?
Patch: Bug Fix?
Major: Breaking Change?
Minor: New Feature?
Tests Added + Pass? Yes
Documentation PR
Any Dependency Changes?
License MIT

@Andarist Andarist added the PR: Polish 💅 A type of pull request used for our changelog categories label Jan 9, 2018
if (typeof Class !== "function") {
throw new TypeError("Super expression must either be null or a function");
}
var _cache = typeof Map === "function" && new Map();
Copy link
Copy Markdown
Member

@nicolo-ribaudo nicolo-ribaudo Jan 9, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wouldn't tree-shakers remove this even if it was outside from the function, since Map is known to be pure?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not every tool unfortunately have sets of pure builtins in their codebases (from what I know), I've tried to get rid of this statement with UglifyJS and couldnt make it work, cc @kzc

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Uglify regards Map as an unresolved global and won't reduce that expression. Even if it did recognize Map it would be conservative and assume that it can be overridden in the worst case:

$ echo '"use strict"; console.log(Map); Map=1; console.log(Map);' | node
[Function: Map]
1

Rollup, on the other hand, might be able to do it as it assumes an ES6 environment and that no builtins can be overridden.

Copy link
Copy Markdown
Member Author

@Andarist Andarist Jan 9, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then imho we should leave it in the form I've proposed. Thanks for the clarification @kzc!

@Andarist Andarist force-pushed the tweak/wrap-native-super branch 2 times, most recently from a16d623 to 6ad5e9a Compare January 9, 2018 22:15
@babel-bot
Copy link
Copy Markdown
Collaborator

babel-bot commented Jan 9, 2018

Build successful! You can test your changes in the REPL here: https://babeljs.io/repl/build/7256/

@Andarist Andarist force-pushed the tweak/wrap-native-super branch from 6ad5e9a to 0bb6204 Compare March 14, 2018 22:15
@Andarist Andarist force-pushed the tweak/wrap-native-super branch from 0bb6204 to b3246eb Compare March 14, 2018 22:41
@Andarist Andarist merged commit 586d3b5 into babel:master Mar 14, 2018
@Andarist Andarist deleted the tweak/wrap-native-super branch March 14, 2018 22:48
aminmarashi pushed a commit to aminmarashi/babel that referenced this pull request Mar 17, 2018
mAAdhaTTah added a commit to valtech-nyc/babel that referenced this pull request Mar 18, 2018
* master: (131 commits)
  v7.0.0-beta.42
  Use strict namespace behavior for mjs files. (babel#7545)
  Remove outdated spec deviation note [skip ci] (babel#7571)
  Ensure that the backward-compat logic for plugin-utils copies over the version API properly. (babel#7580)
  Rename actual/expected test files to input/output (babel#7578)
  Use helper-module-import inside entry plugin too
  Use helper-module-imports instead of custom import (babel#7457)
  Fix "Module build failed: Error: Cannot find module '@babel/types'" (babel#7575)
  Wrap wrapNativeSuper helpers in redefining functions for better tree-shakeability (babel#7188)
  Favour extends helper over objectWithoutProperties when whole object gets copied anyway (babel#7390)
  Fix incorrect value of _cache in _wrapNativeSuper (babel#7570)
  [transform-classes] Fix typo in _wrapNativeSuper helper
  [typeof-symbol] Guard against undefined built-in globals
  update to beta.41 (babel#7568)
  v7.0.0-beta.41
  Fix import of type ConfigItem (babel#7561)
  Run node 9 on circleci and remove from travis (babel#7560)
  docs: [skip ci] fix proposal link text
  update preset-env after build-data (babel#7543)
  Re-add TEST_ONLY and use Jest's -t for TEST_GREP. (babel#7556)
  ...
mAAdhaTTah added a commit to valtech-nyc/babel that referenced this pull request Mar 18, 2018
…ature/pipe-await

* 'master' of https://github.com/valtech-nyc/babel: (131 commits)
  v7.0.0-beta.42
  Use strict namespace behavior for mjs files. (babel#7545)
  Remove outdated spec deviation note [skip ci] (babel#7571)
  Ensure that the backward-compat logic for plugin-utils copies over the version API properly. (babel#7580)
  Rename actual/expected test files to input/output (babel#7578)
  Use helper-module-import inside entry plugin too
  Use helper-module-imports instead of custom import (babel#7457)
  Fix "Module build failed: Error: Cannot find module '@babel/types'" (babel#7575)
  Wrap wrapNativeSuper helpers in redefining functions for better tree-shakeability (babel#7188)
  Favour extends helper over objectWithoutProperties when whole object gets copied anyway (babel#7390)
  Fix incorrect value of _cache in _wrapNativeSuper (babel#7570)
  [transform-classes] Fix typo in _wrapNativeSuper helper
  [typeof-symbol] Guard against undefined built-in globals
  update to beta.41 (babel#7568)
  v7.0.0-beta.41
  Fix import of type ConfigItem (babel#7561)
  Run node 9 on circleci and remove from travis (babel#7560)
  docs: [skip ci] fix proposal link text
  update preset-env after build-data (babel#7543)
  Re-add TEST_ONLY and use Jest's -t for TEST_GREP. (babel#7556)
  ...
mAAdhaTTah added a commit to valtech-nyc/babel that referenced this pull request Mar 21, 2018
* master: (140 commits)
  Update to beta.42 (babel#7609)
  Disable flow on transformClass, fix preset-env errors (babel#7605)
  Logical Assignment: ensure computed key isn't recomputed (babel#7604)
  Remove obsolete max-len eslint rule and reformat some stuff to fit (babel#7602)
  Centralize Babel's own compilation config to make it easier to follow. (babel#7599)
  Run prettier to format all JSON.
  Tweak es2015-related plugin order in preset-env (babel#7586)
  Refactored quirky inheritance in babel-plugin-transform-classes (babel#7444)
  Add RegExp support to include/exclude preset-env options (babel#7242)
  v7.0.0-beta.42
  Use strict namespace behavior for mjs files. (babel#7545)
  Remove outdated spec deviation note [skip ci] (babel#7571)
  Ensure that the backward-compat logic for plugin-utils copies over the version API properly. (babel#7580)
  Rename actual/expected test files to input/output (babel#7578)
  Use helper-module-import inside entry plugin too
  Use helper-module-imports instead of custom import (babel#7457)
  Fix "Module build failed: Error: Cannot find module '@babel/types'" (babel#7575)
  Wrap wrapNativeSuper helpers in redefining functions for better tree-shakeability (babel#7188)
  Favour extends helper over objectWithoutProperties when whole object gets copied anyway (babel#7390)
  Fix incorrect value of _cache in _wrapNativeSuper (babel#7570)
  ...
@lock lock bot added the outdated A closed issue/PR that is archived due to age. Recommended to make a new issue label Oct 5, 2019
@lock lock bot locked as resolved and limited conversation to collaborators Oct 5, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

outdated A closed issue/PR that is archived due to age. Recommended to make a new issue PR: Polish 💅 A type of pull request used for our changelog categories

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants