eslint / typescript-eslint-parser

An ESLint custom parser which leverages TypeScript ESTree to allow for ESLint to lint TypeScript source code.
Other
915 stars 92 forks source link

"declare global" prevents accessing parent scope (no-undef) #579

Closed saifelse closed 5 years ago

saifelse commented 5 years ago

What version of TypeScript are you using? 3.1.3

What version of typescript-eslint-parser are you using? 21.0.2

What code were you trying to parse?

import React from 'react';

declare global {
  interface Global {
    __r: typeof React;
  }
}

// To complement `global.__r = React;`

What did you expect to happen? No lint errors

What happened?

6:18 error 'React' is not defined no-undef

typescript-eslint-parser/analyze-scope.js:Referencer.visitGlobalAugmentation seems to replace the current scope with the global one, which makes accessing React in the above example incorrectly say it's not defined.

@mysticatea (via #540): what case does visitGlobalAugmentation solve?

JamesHenry commented 5 years ago

This issue has been migrated to the new project here: typescript-eslint/typescript-eslint#21

Thanks!