expect(isMemberExpression('obj[1][2]')).toBe(true)
expect(isMemberExpression('obj[1][2].foo[3].bar.baz')).toBe(true)
expect(isMemberExpression(`a[b[c.d]][0]`)).toBe(true)
+ expect(isMemberExpression('obj?.foo')).toBe(true)
// strings
expect(isMemberExpression(`a['foo' + bar[baz]["qux"]]`)).toBe(true)
expect(isMemberExpression('123[a]')).toBe(false)
expect(isMemberExpression('a + b')).toBe(false)
expect(isMemberExpression('foo()')).toBe(false)
+ expect(isMemberExpression('a?b:c')).toBe(false)
})
}
const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/
-const validIdentCharRE = /[\.\w$\xA0-\uFFFF]/
+const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/
const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g
/**