@@ -47,16 +47,16 @@ module.exports = {
4747 */
4848 /**
4949 * @typedef {object } ScopeStack
50- * @property {ScopeStack } upper
50+ * @property {ScopeStack | null } upper
5151 * @property {FunctionDeclaration | FunctionExpression | ArrowFunctionExpression } functionNode
5252 */
5353 /** @type {Set<ESNode> } */
5454 const lifecycleHookCallNodes = new Set ( )
5555 /** @type {Map<FunctionDeclaration | FunctionExpression | ArrowFunctionExpression, SetupFunctionData> } */
5656 const setupFunctions = new Map ( )
5757
58- /** @type {ScopeStack } */
59- let scopeStack
58+ /** @type {ScopeStack | null } */
59+ let scopeStack = null
6060
6161 return Object . assign (
6262 {
@@ -81,7 +81,10 @@ module.exports = {
8181 } ,
8282 utils . defineVueVisitor ( context , {
8383 ':function' ( node ) {
84- scopeStack = { upper : scopeStack , functionNode : node }
84+ scopeStack = {
85+ upper : scopeStack ,
86+ functionNode : node
87+ }
8588 } ,
8689 onSetupFunctionEnter ( node ) {
8790 setupFunctions . set ( node , {
@@ -90,18 +93,20 @@ module.exports = {
9093 } )
9194 } ,
9295 AwaitExpression ( ) {
93- const setupFunctionData = setupFunctions . get (
94- scopeStack && scopeStack . functionNode
95- )
96+ if ( ! scopeStack ) {
97+ return
98+ }
99+ const setupFunctionData = setupFunctions . get ( scopeStack . functionNode )
96100 if ( ! setupFunctionData ) {
97101 return
98102 }
99103 setupFunctionData . afterAwait = true
100104 } ,
101105 CallExpression ( node ) {
102- const setupFunctionData = setupFunctions . get (
103- scopeStack && scopeStack . functionNode
104- )
106+ if ( ! scopeStack ) {
107+ return
108+ }
109+ const setupFunctionData = setupFunctions . get ( scopeStack . functionNode )
105110 if ( ! setupFunctionData || ! setupFunctionData . afterAwait ) {
106111 return
107112 }
@@ -118,7 +123,7 @@ module.exports = {
118123 }
119124 } ,
120125 ':function:exit' ( node ) {
121- scopeStack = scopeStack . upper
126+ scopeStack = scopeStack && scopeStack . upper
122127
123128 setupFunctions . delete ( node )
124129 }
0 commit comments