dillon1000/react

Commit

[patch] Patch edge case: RenameVariables should visit lvalues

--- 

This is likely a rare edge case, but it does produce a parse error. 

RenameVariables visits all identifier references to ensure we don't end up 
producing conflicting variable declarations, using a stack of block scopes to 
check "in scope variables". 

This pass is currently built to be conservative -- we explicitly rename shadowed 
variables, and visit all rvalue references. The issue is for this IR: 

``` 

{ 

1.  decl t0; 

2.  scope 0 { 

3.    reassign t0 = ... 

4.    read(t0) 

5.  } 

6.  let t0 = ... 

7.  read(t0); 

} 

``` 

We currently visit t0 only on line 4 and 7 (and never rename t0). Instead we 
should visit lvalues (declaration sites) which occur earlier than rvalues 
(visiting lines 1 and 6 will show conflicting declarations)
Browse files
Changed paths3 files
First-parent comparison
M compiler/packages/babel-plugin-react-forget/src/ReactiveScopes/RenameVariables.ts ModifiedA compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/repro-renaming-conflicting-decls.expect.md AddedA compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/repro-renaming-conflicting-decls.js Added
Patch

Files changed

Rendering syntax-highlighted changes…