Skip to content

Rename wrongly in switch/case statement #194

@tmhao2005

Description

@tmhao2005

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions