From 29f756fd6f031a3d40719c6b40517b24a61510e7 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Tue, 10 Nov 2015 14:40:30 -0800 Subject: [PATCH 1/3] add regression tests - closes #2663 --- .../test/fixtures/regression/2663-2/actual.js | 6 +++ .../fixtures/regression/2663-2/expected.js | 32 +++++++++++++ .../fixtures/regression/2663-2/options.json | 4 ++ .../test/fixtures/regression/2663/actual.js | 23 +++++++++ .../test/fixtures/regression/2663/expected.js | 48 +++++++++++++++++++ .../test/fixtures/regression/options.json | 4 ++ 6 files changed, 117 insertions(+) create mode 100644 packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663-2/actual.js create mode 100644 packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663-2/expected.js create mode 100644 packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663-2/options.json create mode 100644 packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663/actual.js create mode 100644 packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663/expected.js create mode 100644 packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/options.json 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..fa4caa55e4 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663-2/options.json @@ -0,0 +1,4 @@ +{ + "presets": ["es2015", "react"], + "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/options.json b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/options.json new file mode 100644 index 0000000000..4713c96921 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/options.json @@ -0,0 +1,4 @@ +{ + "plugins": ["external-helpers-2"], + "presets": ["es2015"] +} From 54c13eef5cd693a58bafa43d59d8fbee2600a192 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Tue, 10 Nov 2015 15:56:22 -0800 Subject: [PATCH 2/3] fix exported classes with static class properties - fixes #2868 --- .../src/index.js | 4 ++++ .../constructor-collision/actual.js | 0 .../constructor-collision/expected.js | 0 .../{class-properties => general}/derived/actual.js | 0 .../derived/expected.js | 0 .../instance-undefined/actual.js | 0 .../instance-undefined/expected.js | 0 .../{class-properties => general}/instance/actual.js | 0 .../instance/expected.js | 0 .../{class-properties => general}/options.json | 0 .../test/fixtures/general/static-export/actual.js | 7 +++++++ .../test/fixtures/general/static-export/expected.js | 12 ++++++++++++ .../static-undefined/actual.js | 0 .../static-undefined/exec.js | 0 .../static-undefined/expected.js | 0 .../{class-properties => general}/static/actual.js | 0 .../{class-properties => general}/static/exec.js | 0 .../{class-properties => general}/static/expected.js | 0 .../super-expression/actual.js | 0 .../super-expression/expected.js | 0 .../super-statement/actual.js | 0 .../super-statement/expected.js | 0 .../test/fixtures/regression/2663-2/options.json | 1 - .../test/fixtures/regression/options.json | 2 +- 24 files changed, 24 insertions(+), 2 deletions(-) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/constructor-collision/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/constructor-collision/expected.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/derived/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/derived/expected.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/instance-undefined/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/instance-undefined/expected.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/instance/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/instance/expected.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/options.json (100%) create mode 100644 packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/actual.js create mode 100644 packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/expected.js rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/static-undefined/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/static-undefined/exec.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/static-undefined/expected.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/static/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/static/exec.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/static/expected.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/super-expression/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/super-expression/expected.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/super-statement/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/super-statement/expected.js (100%) 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/options.json b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663-2/options.json index fa4caa55e4..9093196e47 100644 --- 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 @@ -1,4 +1,3 @@ { - "presets": ["es2015", "react"], "plugins": ["transform-class-properties", "external-helpers-2"] } 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 index 4713c96921..d3de7c728c 100644 --- a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/options.json +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/options.json @@ -1,4 +1,4 @@ { "plugins": ["external-helpers-2"], - "presets": ["es2015"] + "presets": ["es2015", "react"] } From f601e626780df3b33773ca21ff62752afea14c72 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Tue, 10 Nov 2015 16:02:45 -0800 Subject: [PATCH 3/3] add regression test - fixes #2941 --- .../test/fixtures/regression/2941/actual.js | 1 + .../test/fixtures/regression/2941/expected.js | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2941/actual.js create mode 100644 packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2941/expected.js 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;