@@ -54,7 +54,7 @@ module.exports = {
5454 ? useStateReactImportSpecifier . local . name
5555 : undefined ;
5656
57- const isReactUseStateCall = (
57+ const isPotentialReactUseStateCall = (
5858 defaultReactImportName
5959 && node . callee . type === 'MemberExpression'
6060 && node . callee . object . type === 'Identifier'
@@ -69,17 +69,28 @@ module.exports = {
6969 && node . callee . name === useStateReactImportName
7070 ) ;
7171
72- const scope = isPotentialUseStateCall && context . getScope ( ) ;
73- const useStateReference = scope && scope . references . find (
72+ const scope = isPotentialReactUseStateCall || isPotentialUseStateCall
73+ ? context . getScope ( )
74+ : undefined ;
75+
76+ const reactResolvedDefs = isPotentialReactUseStateCall && scope . references . find (
77+ ( reference ) => reference . identifier . name === defaultReactImportName
78+ ) . resolved . defs ;
79+ const useStateResolvedDefs = isPotentialUseStateCall && scope . references . find (
7480 ( reference ) => reference . identifier . name === useStateReactImportName
75- ) ;
76- const useStateResolvedDefs = useStateReference
77- ? useStateReference . resolved . defs
81+ ) . resolved . defs ;
82+
83+ const ultimateReactResolvedDef = reactResolvedDefs
84+ ? reactResolvedDefs [ reactResolvedDefs . length - 1 ]
7885 : undefined ;
7986 const ultimateUseStateResolvedDef = useStateResolvedDefs
8087 ? useStateResolvedDefs [ useStateResolvedDefs . length - 1 ]
8188 : undefined ;
89+
90+ const isReactShadowed = ultimateReactResolvedDef && ultimateReactResolvedDef . type !== 'ImportBinding' ;
8291 const isUseStateShadowed = ultimateUseStateResolvedDef && ultimateUseStateResolvedDef . type !== 'ImportBinding' ;
92+
93+ const isReactUseStateCall = isPotentialReactUseStateCall && ! isReactShadowed ;
8394 const isUseStateCall = isPotentialUseStateCall && ! isUseStateShadowed ;
8495
8596 // Ignore unless this is a useState() or React.useState() call.
0 commit comments