Fixed issue with programPath.scope.references not being regist… (#11323)
This commit is contained in:
parent
46f31460d6
commit
025e4ae44c
@ -609,6 +609,8 @@ export default class Scope {
|
|||||||
const ids = path.getOuterBindingIdentifiers(true);
|
const ids = path.getOuterBindingIdentifiers(true);
|
||||||
|
|
||||||
for (const name of Object.keys(ids)) {
|
for (const name of Object.keys(ids)) {
|
||||||
|
parent.references[name] = true;
|
||||||
|
|
||||||
for (const id of (ids[name]: Array<Object>)) {
|
for (const id of (ids[name]: Array<Object>)) {
|
||||||
const local = this.getOwnBinding(name);
|
const local = this.getOwnBinding(name);
|
||||||
|
|
||||||
@ -620,8 +622,6 @@ export default class Scope {
|
|||||||
this.checkBlockScopedCollisions(local, kind, name, id);
|
this.checkBlockScopedCollisions(local, kind, name, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
parent.references[name] = true;
|
|
||||||
|
|
||||||
// A redeclaration of an existing variable is a modification
|
// A redeclaration of an existing variable is a modification
|
||||||
if (local) {
|
if (local) {
|
||||||
this.registerConstantViolation(bindingPath);
|
this.registerConstantViolation(bindingPath);
|
||||||
|
|||||||
@ -303,6 +303,24 @@ describe("scope", () => {
|
|||||||
|
|
||||||
expect(path.scope.bindings.a).toBe(path.get("body[0]").scope.bindings.a);
|
expect(path.scope.bindings.a).toBe(path.get("body[0]").scope.bindings.a);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("references after re-crawling", function() {
|
||||||
|
const path = getPath("function Foo() { var _jsx; }");
|
||||||
|
|
||||||
|
path.scope.crawl();
|
||||||
|
path.scope.crawl();
|
||||||
|
|
||||||
|
expect(path.scope.references._jsx).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
test("generateUid collision check after re-crawling", function() {
|
||||||
|
const path = getPath("function Foo() { var _jsx; }");
|
||||||
|
|
||||||
|
path.scope.crawl();
|
||||||
|
path.scope.crawl();
|
||||||
|
|
||||||
|
expect(path.scope.generateUid("jsx")).toBe("_jsx2");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("duplicate bindings", () => {
|
describe("duplicate bindings", () => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user