diff --git a/packages/babel-plugin-transform-class-properties/src/index.js b/packages/babel-plugin-transform-class-properties/src/index.js index 0ee7a915ac..3de3c28019 100644 --- a/packages/babel-plugin-transform-class-properties/src/index.js +++ b/packages/babel-plugin-transform-class-properties/src/index.js @@ -134,6 +134,10 @@ export default function ({ types: t }) { nodes.push(t.expressionStatement(ref)); } + if (path.isClassDeclaration() && path.parentPath.isExportDeclaration()) { + path = path.parentPath; + } + path.insertAfter(nodes); } } diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/constructor-collision/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/constructor-collision/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/constructor-collision/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/constructor-collision/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/constructor-collision/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/constructor-collision/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/constructor-collision/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/constructor-collision/expected.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/derived/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/derived/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/derived/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/derived/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/derived/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/derived/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/derived/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/derived/expected.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/instance-undefined/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/instance-undefined/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/instance-undefined/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/instance-undefined/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/instance-undefined/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/instance-undefined/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/instance-undefined/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/instance-undefined/expected.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/instance/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/instance/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/instance/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/instance/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/instance/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/instance/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/instance/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/instance/expected.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/options.json b/packages/babel-plugin-transform-class-properties/test/fixtures/general/options.json similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/options.json rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/options.json diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/actual.js new file mode 100644 index 0000000000..729475cc52 --- /dev/null +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/actual.js @@ -0,0 +1,7 @@ +export class MyClass { + static property = value; +} + +export default class MyClass2 { + static property = value; +} diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/expected.js new file mode 100644 index 0000000000..0405f67721 --- /dev/null +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/expected.js @@ -0,0 +1,12 @@ +export var MyClass = function MyClass() { + babelHelpers.classCallCheck(this, MyClass); +}; + +MyClass.property = value; + +var MyClass2 = function MyClass2() { + babelHelpers.classCallCheck(this, MyClass2); +}; + +export default MyClass2; +MyClass2.property = value; diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static-undefined/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-undefined/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static-undefined/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/static-undefined/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static-undefined/exec.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-undefined/exec.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static-undefined/exec.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/static-undefined/exec.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static-undefined/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-undefined/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static-undefined/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/static-undefined/expected.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/static/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static/exec.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static/exec.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static/exec.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/static/exec.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/static/expected.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/super-expression/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-expression/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/super-expression/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/super-expression/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/super-expression/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-expression/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/super-expression/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/super-expression/expected.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/super-statement/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-statement/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/super-statement/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/super-statement/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/super-statement/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-statement/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/super-statement/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/super-statement/expected.js diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663-2/actual.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663-2/actual.js new file mode 100644 index 0000000000..9f5c34b067 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663-2/actual.js @@ -0,0 +1,6 @@ +import React from 'react' +export default class Button extends React.Component { + render() { + return + } +} diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663-2/expected.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663-2/expected.js new file mode 100644 index 0000000000..127b4fcbe8 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663-2/expected.js @@ -0,0 +1,32 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _react = require('react'); + +var _react2 = babelHelpers.interopRequireDefault(_react); + +var Button = (function (_React$Component) { + babelHelpers.inherits(Button, _React$Component); + + function Button() { + babelHelpers.classCallCheck(this, Button); + return babelHelpers.possibleConstructorReturn(this, Object.getPrototypeOf(Button).apply(this, arguments)); + } + + babelHelpers.createClass(Button, [{ + key: 'render', + value: function render() { + return _react2.default.createElement( + 'button', + null, + 'foo' + ); + } + }]); + return Button; +})(_react2.default.Component); + +exports.default = Button; diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663-2/options.json b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663-2/options.json new file mode 100644 index 0000000000..9093196e47 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663-2/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["transform-class-properties", "external-helpers-2"] +} diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663/actual.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663/actual.js new file mode 100644 index 0000000000..d109d29c35 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663/actual.js @@ -0,0 +1,23 @@ +import net from 'net'; +import { EventEmitter } from 'events'; +import BinarySerializer from './helpers/binary-serializer'; +// import ... + +export default class Connection extends EventEmitter { + constructor(endpoint, joinKey, joinData, roomId) { + super(); + + this.isConnected = false; + this.roomId = roomId; + + // ... + } + + send(message) { + this.sock.write(BinarySerializer.serializeMessage(message)); + } + + disconnect() { + this.sock.close(); + } +} diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663/expected.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663/expected.js new file mode 100644 index 0000000000..7296efa18e --- /dev/null +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663/expected.js @@ -0,0 +1,48 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _net = require('net'); + +var _net2 = babelHelpers.interopRequireDefault(_net); + +var _events = require('events'); + +var _binarySerializer = require('./helpers/binary-serializer'); + +var _binarySerializer2 = babelHelpers.interopRequireDefault(_binarySerializer); + +// import ... + +var Connection = (function (_EventEmitter) { + babelHelpers.inherits(Connection, _EventEmitter); + + function Connection(endpoint, joinKey, joinData, roomId) { + babelHelpers.classCallCheck(this, Connection); + + var _this = babelHelpers.possibleConstructorReturn(this, Object.getPrototypeOf(Connection).call(this)); + + _this.isConnected = false; + _this.roomId = roomId; + + // ... + return _this; + } + + babelHelpers.createClass(Connection, [{ + key: 'send', + value: function send(message) { + this.sock.write(_binarySerializer2.default.serializeMessage(message)); + } + }, { + key: 'disconnect', + value: function disconnect() { + this.sock.close(); + } + }]); + return Connection; +})(_events.EventEmitter); + +exports.default = Connection; diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2941/actual.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2941/actual.js new file mode 100644 index 0000000000..a6e68e9838 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2941/actual.js @@ -0,0 +1 @@ +export default class {} diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2941/expected.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2941/expected.js new file mode 100644 index 0000000000..933d6c74f8 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2941/expected.js @@ -0,0 +1,11 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _class = function _class() { + babelHelpers.classCallCheck(this, _class); +}; + +exports.default = _class; diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/options.json b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/options.json new file mode 100644 index 0000000000..d3de7c728c --- /dev/null +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/options.json @@ -0,0 +1,4 @@ +{ + "plugins": ["external-helpers-2"], + "presets": ["es2015", "react"] +}