babel-plugin-transform-react-remove-prop-types icon indicating copy to clipboard operation
babel-plugin-transform-react-remove-prop-types copied to clipboard

Rename wrongly in switch/case statement

Open tmhao2005 opened this issue 5 years ago • 0 comments

I just found out an issue regarding the option "removeImport": true like I got a following snippet function:

function foo(arg, list) {
    switch (arg) {
      case 0: {
        const item = arg.payload;
        return list.some(_item => _item.id === item.id);
      };
      case 1: {
        const item = arg.payload;
        return list.some(_item => _item.id === item.id);
      }
    }    
  }

the results after compile with es5 mode:

function foo(arg, list) {
            switch (arg) {
              case 0:
                {
                  var item = arg.payload;
                  return list.some(function (_item) {
                    return _item.id === item.id;
                  });
                }
                ;
      
              case 1:
                {
                  var _item = arg.payload;
                  return list.some(function (_item) {
                   /* BUG HERE: it renamed wrongly here 2 vars with same name  */
                   return _item.id === _item.id;
                  });
                }
            }
          }

The issue is at the case 1 where it renames 2 vars with the name name _item in 2 scopes that creating bug.

Seems reprocess the scope causes the issue here:

programPath.scope.crawl()

https://github.com/oliviertassinari/babel-plugin-transform-react-remove-prop-types/blob/master/src/index.js#L364

tmhao2005 avatar Apr 15 '20 04:04 tmhao2005