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

Most upvoted comments

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:

export default class MyComponent extends React.Component {}
Error: index.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 (/Users/thejameskyle/Projects/Tests/__babel-bug-2700/node_modules/babel-traverse/lib/path/modification.js:181:13)
    at NodePath.replaceWithMultiple (/Users/thejameskyle/Projects/Tests/__babel-bug-2700/node_modules/babel-traverse/lib/path/replacement.js:92:8)
    at handleClassWithSuper (/Users/thejameskyle/Projects/Tests/__babel-bug-2700/node_modules/babel-plugin-transform-class-constructor-call/lib/index.js:80:10)
    at PluginPass.Class (/Users/thejameskyle/Projects/Tests/__babel-bug-2700/node_modules/babel-plugin-transform-class-constructor-call/lib/index.js:101:11)
    at newFn (/Users/thejameskyle/Projects/Tests/__babel-bug-2700/node_modules/babel-traverse/lib/visitors.js:233:27)
    at NodePath._call (/Users/thejameskyle/Projects/Tests/__babel-bug-2700/node_modules/babel-traverse/lib/path/context.js:72:18)
    at NodePath.call (/Users/thejameskyle/Projects/Tests/__babel-bug-2700/node_modules/babel-traverse/lib/path/context.js:44:17)
    at NodePath.visit (/Users/thejameskyle/Projects/Tests/__babel-bug-2700/node_modules/babel-traverse/lib/path/context.js:102:12)
    at TraversalContext.visitQueue (/Users/thejameskyle/Projects/Tests/__babel-bug-2700/node_modules/babel-traverse/lib/context.js:151:16)
    at TraversalContext.visitSingle (/Users/thejameskyle/Projects/Tests/__babel-bug-2700/node_modules/babel-traverse/lib/context.js:111:19)