From bbdd4aaf21e3f73cc98c9e5ac61bad7d881b1838 Mon Sep 17 00:00:00 2001 From: Jason Date: Sat, 23 Jan 2016 18:39:14 +0800 Subject: [PATCH 1/3] Ignore isolated paths when traversing --- .../class-argument-scope/example/actual.js | 3 ++ .../class-argument-scope/example/expected.js | 29 +++++++++++++++++++ .../class-argument-scope/options.json | 5 ++++ packages/babel-traverse/src/context.js | 3 ++ 4 files changed, 40 insertions(+) create mode 100644 packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/example/actual.js create mode 100644 packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/example/expected.js create mode 100644 packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/options.json diff --git a/packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/example/actual.js b/packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/example/actual.js new file mode 100644 index 0000000000..73e505f170 --- /dev/null +++ b/packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/example/actual.js @@ -0,0 +1,3 @@ +class C { + *method(arg = this) {} +} diff --git a/packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/example/expected.js b/packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/example/expected.js new file mode 100644 index 0000000000..db4207265f --- /dev/null +++ b/packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/example/expected.js @@ -0,0 +1,29 @@ +"use strict"; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var C = function () { + function C() { + _classCallCheck(this, C); + } + + _createClass(C, [{ + key: "method", + value: regeneratorRuntime.mark(function method() { + var arg = arguments.length <= 0 || arguments[0] === undefined ? this : arguments[0]; + return regeneratorRuntime.wrap(function method$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + case "end": + return _context.stop(); + } + } + }, method, this); + }) + }]); + + return C; +}(); diff --git a/packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/options.json b/packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/options.json new file mode 100644 index 0000000000..3c078e9f99 --- /dev/null +++ b/packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/options.json @@ -0,0 +1,5 @@ +{ + "presets": [ + "es2015" + ] +} diff --git a/packages/babel-traverse/src/context.js b/packages/babel-traverse/src/context.js index 2e134f0abe..97f60559c9 100644 --- a/packages/babel-traverse/src/context.js +++ b/packages/babel-traverse/src/context.js @@ -105,6 +105,9 @@ export default class TraversalContext { path.resync(); path.pushContext(this); + // this path is no longer belongs to the tree + if (path.key === null) continue; + if (testing && queue.length >= 1000) { this.trap = true; } From 35463a46b6b7f115e98d145d2f60b86ec6d1942c Mon Sep 17 00:00:00 2001 From: Jason Date: Sat, 23 Jan 2016 23:30:52 +0800 Subject: [PATCH 2/3] Use exec style test in transform-regenerator --- .../class-argument-scope/example/actual.js | 3 -- .../class-argument-scope/example/exec.js | 8 +++++ .../class-argument-scope/example/expected.js | 29 ------------------- 3 files changed, 8 insertions(+), 32 deletions(-) delete mode 100644 packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/example/actual.js create mode 100644 packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/example/exec.js delete mode 100644 packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/example/expected.js diff --git a/packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/example/actual.js b/packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/example/actual.js deleted file mode 100644 index 73e505f170..0000000000 --- a/packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/example/actual.js +++ /dev/null @@ -1,3 +0,0 @@ -class C { - *method(arg = this) {} -} diff --git a/packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/example/exec.js b/packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/example/exec.js new file mode 100644 index 0000000000..46f1fd4f74 --- /dev/null +++ b/packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/example/exec.js @@ -0,0 +1,8 @@ +class Test { + *iter(arg = this) { + yield arg; + } +} + +let test = new Test; +assert.equal(test.iter().next().value, test); diff --git a/packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/example/expected.js b/packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/example/expected.js deleted file mode 100644 index db4207265f..0000000000 --- a/packages/babel-plugin-transform-regenerator/test/fixtures/class-argument-scope/example/expected.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var C = function () { - function C() { - _classCallCheck(this, C); - } - - _createClass(C, [{ - key: "method", - value: regeneratorRuntime.mark(function method() { - var arg = arguments.length <= 0 || arguments[0] === undefined ? this : arguments[0]; - return regeneratorRuntime.wrap(function method$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - case "end": - return _context.stop(); - } - } - }, method, this); - }) - }]); - - return C; -}(); From 523a9d1d000e4961e9526b4e1928f8790734dfc5 Mon Sep 17 00:00:00 2001 From: Jason Date: Wed, 3 Feb 2016 17:46:34 +0800 Subject: [PATCH 3/3] [traverse] nit --- packages/babel-traverse/src/context.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/babel-traverse/src/context.js b/packages/babel-traverse/src/context.js index 97f60559c9..edad4ea598 100644 --- a/packages/babel-traverse/src/context.js +++ b/packages/babel-traverse/src/context.js @@ -105,7 +105,7 @@ export default class TraversalContext { path.resync(); path.pushContext(this); - // this path is no longer belongs to the tree + // this path no longer belongs to the tree if (path.key === null) continue; if (testing && queue.length >= 1000) {