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/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..edad4ea598 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 no longer belongs to the tree + if (path.key === null) continue; + if (testing && queue.length >= 1000) { this.trap = true; }