@@ -77,7 +77,7 @@ export const isMemberExpression = (path: string): boolean => {
77
77
path = path . trim ( ) . replace ( whitespaceRE , s => s . trim ( ) )
78
78
79
79
let state = MemberExpLexState . inMemberExp
80
- let prevState = MemberExpLexState . inMemberExp
80
+ let stateStack : MemberExpLexState [ ] = [ ]
81
81
let currentOpenBracketCount = 0
82
82
let currentStringType : "'" | '"' | '`' | null = null
83
83
@@ -86,7 +86,7 @@ export const isMemberExpression = (path: string): boolean => {
86
86
switch ( state ) {
87
87
case MemberExpLexState . inMemberExp :
88
88
if ( char === '[' ) {
89
- prevState = state
89
+ stateStack . push ( state )
90
90
state = MemberExpLexState . inBrackets
91
91
currentOpenBracketCount ++
92
92
} else if (
@@ -97,20 +97,20 @@ export const isMemberExpression = (path: string): boolean => {
97
97
break
98
98
case MemberExpLexState . inBrackets :
99
99
if ( char === `'` || char === `"` || char === '`' ) {
100
- prevState = state
100
+ stateStack . push ( state )
101
101
state = MemberExpLexState . inString
102
102
currentStringType = char
103
103
} else if ( char === `[` ) {
104
104
currentOpenBracketCount ++
105
105
} else if ( char === `]` ) {
106
106
if ( ! -- currentOpenBracketCount ) {
107
- state = prevState
107
+ state = stateStack . pop ( ) !
108
108
}
109
109
}
110
110
break
111
111
case MemberExpLexState . inString :
112
112
if ( char === currentStringType ) {
113
- state = prevState
113
+ state = stateStack . pop ( ) !
114
114
currentStringType = null
115
115
}
116
116
break
0 commit comments