Fix path.scope.rename() to not change break clauses (#8478)
* Make labels on break and continue statements not referenced * Add test for imports and labels with the same name
This commit is contained in:
parent
47e05d70f3
commit
22bcfbe469
5
packages/babel-generator/test/fixtures/harmony-edgecase/import-with-break/input.js
vendored
Normal file
5
packages/babel-generator/test/fixtures/harmony-edgecase/import-with-break/input.js
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import foo from "foo";
|
||||||
|
|
||||||
|
foo: {
|
||||||
|
break foo;
|
||||||
|
}
|
||||||
5
packages/babel-generator/test/fixtures/harmony-edgecase/import-with-break/output.js
vendored
Normal file
5
packages/babel-generator/test/fixtures/harmony-edgecase/import-with-break/output.js
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import foo from "foo";
|
||||||
|
|
||||||
|
foo: {
|
||||||
|
break foo;
|
||||||
|
}
|
||||||
9
packages/babel-traverse/test/fixtures/rename/break-statements/input.js
vendored
Normal file
9
packages/babel-traverse/test/fixtures/rename/break-statements/input.js
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
function f(a) {
|
||||||
|
a: for (const k in []) {
|
||||||
|
if (k) {
|
||||||
|
continue a;
|
||||||
|
} else {
|
||||||
|
break a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
3
packages/babel-traverse/test/fixtures/rename/break-statements/options.json
vendored
Normal file
3
packages/babel-traverse/test/fixtures/rename/break-statements/options.json
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"plugins": ["./plugin"]
|
||||||
|
}
|
||||||
9
packages/babel-traverse/test/fixtures/rename/break-statements/output.js
vendored
Normal file
9
packages/babel-traverse/test/fixtures/rename/break-statements/output.js
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
function f(b) {
|
||||||
|
a: for (const k in []) {
|
||||||
|
if (k) {
|
||||||
|
continue a;
|
||||||
|
} else {
|
||||||
|
break a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
9
packages/babel-traverse/test/fixtures/rename/break-statements/plugin.js
vendored
Normal file
9
packages/babel-traverse/test/fixtures/rename/break-statements/plugin.js
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
module.exports = function() {
|
||||||
|
return {
|
||||||
|
visitor: {
|
||||||
|
Function(path) {
|
||||||
|
path.scope.rename("a", "b");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -80,6 +80,10 @@ export default function isReferenced(node: Object, parent: Object): boolean {
|
|||||||
case "RestElement":
|
case "RestElement":
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
case "BreakStatement":
|
||||||
|
case "ContinueStatement":
|
||||||
|
return false;
|
||||||
|
|
||||||
// no: function NODE() {}
|
// no: function NODE() {}
|
||||||
// no: function foo(NODE) {}
|
// no: function foo(NODE) {}
|
||||||
case "FunctionDeclaration":
|
case "FunctionDeclaration":
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user