Fixed issue with programPath.scope.references not being regist… (#11323)

This commit is contained in:
Mateusz Burzyński 2020-03-24 16:27:32 +01:00 committed by GitHub
parent 46f31460d6
commit 025e4ae44c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 2 deletions

View File

@ -609,6 +609,8 @@ export default class Scope {
const ids = path.getOuterBindingIdentifiers(true);
for (const name of Object.keys(ids)) {
parent.references[name] = true;
for (const id of (ids[name]: Array<Object>)) {
const local = this.getOwnBinding(name);
@ -620,8 +622,6 @@ export default class Scope {
this.checkBlockScopedCollisions(local, kind, name, id);
}
parent.references[name] = true;
// A redeclaration of an existing variable is a modification
if (local) {
this.registerConstantViolation(bindingPath);

View File

@ -303,6 +303,24 @@ describe("scope", () => {
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", () => {