babel: Class extends does not work in babel 6
The following code does not compile with babel 6 but throws an error (which is not very informative):
class Expression {}
export class ArrayExpression extends Expression {
}
~/source/ankara (master)$ ./node_modules/.bin/babel test.js
Error: test.js: We don't know what to do with this node type. We were previously a Statement but we can't fit in here?
at NodePath.insertAfter (/home/markusw/source/ankara/node_modules/babel-cli/node_modules/babel-core/node_modules/babel-traverse/lib/path/modification.js:181:13)
at NodePath.replaceWithMultiple (/home/markusw/source/ankara/node_modules/babel-cli/node_modules/babel-core/node_modules/babel-traverse/lib/path/replacement.js:92:8)
at handleClassWithSuper (/home/markusw/source/ankara/node_modules/babel-preset-stage-1/node_modules/babel-plugin-transform-class-constructor-call/lib/index.js:80:10)
at PluginPass.Class (/home/markusw/source/ankara/node_modules/babel-preset-stage-1/node_modules/babel-plugin-transform-class-constructor-call/lib/index.js:101:11)
at newFn (/home/markusw/source/ankara/node_modules/babel-cli/node_modules/babel-core/node_modules/babel-traverse/lib/visitors.js:233:27)
at NodePath._call (/home/markusw/source/ankara/node_modules/babel-cli/node_modules/babel-core/node_modules/babel-traverse/lib/path/context.js:72:18)
at NodePath.call (/home/markusw/source/ankara/node_modules/babel-cli/node_modules/babel-core/node_modules/babel-traverse/lib/path/context.js:44:17)
at NodePath.visit (/home/markusw/source/ankara/node_modules/babel-cli/node_modules/babel-core/node_modules/babel-traverse/lib/path/context.js:102:12)
at TraversalContext.visitQueue (/home/markusw/source/ankara/node_modules/babel-cli/node_modules/babel-core/node_modules/babel-traverse/lib/context.js:151:16)
at TraversalContext.visitSingle (/home/markusw/source/ankara/node_modules/babel-cli/node_modules/babel-core/node_modules/babel-traverse/lib/context.js:111:19)
My .babel.rc contains the following:
{
"presets": ["stage-1"],
"plugins": ["transform-async-to-generator"]
}
The following snippet does work:
class Expression {}
export class ArrayExpression {
}
About this issue
- Original URL
- State: closed
- Created 9 years ago
- Comments: 32 (6 by maintainers)
Commits related to this issue
- Explicitly name classes (see https://github.com/babel/babel/issues/2700 for details). — committed to michaelahlers/presence by deleted user 9 years ago
And… that was actually because of the order of my presets. Used
['stage-0', 'es2015', 'react']
, should’ve used['es2015', 'stage-0', 'react']
I can confirm this is fixed. Thank you so much!
There’s an additional issue if you are setting an extended class as the default export it errors: