facebook / jscodeshift

A JavaScript codemod toolkit.
https://jscodeshift.com
MIT License
9.11k stars 468 forks source link

`Error: null does not match type Pattern` when scanning scope of optional catch #586

Closed j4k0xb closed 3 months ago

j4k0xb commented 3 months ago

Reproduction: https://stackblitz.com/edit/stackblitz-starters-btzbm6?file=index.js

const j = require('jscodeshift');

j(`try {} catch (e) { i }`)
  .find(j.Identifier)
  .forEach((p) => {
    p.scope.lookup(p.name); // works
  });

console.log('1');

j(`try {} catch { i }`)
  .find(j.Identifier)
  .forEach((p) => {
    p.scope.lookup(p.name); // errors
  });

console.log('2');
Error: null does not match type Pattern
    at BaseType.assert (/home/projects/stackblitz-starters-btzbm6/node_modules/ast-types/lib/types.js:15:19)
    at addPattern (/home/projects/stackblitz-starters-btzbm6/node_modules/ast-types/lib/scope.js:256:28)
    at scanScope (/home/projects/stackblitz-starters-btzbm6/node_modules/ast-types/lib/scope.js:136:17)
    at Sp.scan (/home/projects/stackblitz-starters-btzbm6/node_modules/ast-types/lib/scope.js:109:13)
    at Sp.declares (/home/projects/stackblitz-starters-btzbm6/node_modules/ast-types/lib/scope.js:63:14)
    at Sp.lookup (/home/projects/stackblitz-starters-btzbm6/node_modules/ast-types/lib/scope.js:337:23)
    at NodePath.eval (/home/projects/stackblitz-starters-btzbm6/index.js:14:13)
    at eval (/home/projects/stackblitz-starters-btzbm6/node_modules/jscodeshift/src/Collection.js:75:36)
    at Collection.forEach (/home/projects/stackblitz-starters-btzbm6/node_modules/jscodeshift/src/Collection.js:74:18)

nvm its a duplicate: https://github.com/benjamn/ast-types/issues/944