babel/packages/babel-plugin-transform-es2015-typeof-symbol
Alberto Piai 8f6d4ae5cf Fix typeof Symbol.prototype (#3686)
* formatting

* fix `typeof Symbol.prototype`

Babel uses a helper function to return the correct value for `typeof
obj` when obj is a Symbol and support for Symbol has been polyfilled.

This function assumes that `obj.constructor === Symbol` implies `typeof
obj === 'symbol'`.

This isn't true when obj is `Symbol.prototype`. In that case (REPL from
node 6, the same holds in Firefox):

```
> Symbol.prototype.constructor === Symbol
true
> typeof Symbol.prototype
'object'
>
```

AFAICS, that's the only case where the assumption doesn't hold.

The test added by this patch fails only on node 0.10, as 0.12 already
has a native implementation of Symbol and the polyfill code doesn't run.

This caused a problem in core-js when it's compiled with babel (the
issue was isolated by @skozin here:
https://github.com/zloirock/core-js/issues/189#issuecomment-209864582).
2016-09-20 12:19:09 -04:00
..
2016-02-14 23:25:14 +00:00
2016-09-20 12:19:09 -04:00
2015-10-30 23:45:42 +00:00
2016-05-02 19:43:49 -04:00
2015-10-29 17:51:24 +00:00

babel-plugin-transform-es2015-typeof-symbol

Installation

$ npm install babel-plugin-transform-es2015-typeof-symbol

Usage

.babelrc

{
  "plugins": ["transform-es2015-typeof-symbol"]
}

Via CLI

$ babel --plugins transform-es2015-typeof-symbol script.js

Via Node API

require("babel-core").transform("code", {
  plugins: ["transform-es2015-typeof-symbol"]
});