fix(compiler-core): improve member expression check

fix #3910
This commit is contained in:
Evan You
2021-06-09 11:57:48 -04:00
parent 9a5bdb15df
commit bc100c5c48
3 changed files with 78 additions and 9 deletions

View File

@@ -81,9 +81,25 @@ test('isMemberExpression', () => {
expect(isMemberExpression('obj[arr[ret[bar]]]')).toBe(true)
expect(isMemberExpression('obj[arr[ret[bar]]].baz')).toBe(true)
expect(isMemberExpression('obj[1 + 1]')).toBe(true)
// should warning
expect(isMemberExpression(`obj[x[0]]`)).toBe(true)
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)
// strings
expect(isMemberExpression(`a['foo' + bar[baz]["qux"]]`)).toBe(true)
// multiline whitespaces
expect(isMemberExpression('obj \n .foo \n [bar \n + baz]')).toBe(true)
expect(isMemberExpression(`\n model\n.\nfoo \n`)).toBe(true)
// should fail
expect(isMemberExpression('a \n b')).toBe(false)
expect(isMemberExpression('obj[foo')).toBe(false)
expect(isMemberExpression('objfoo]')).toBe(false)
expect(isMemberExpression('obj[arr[0]')).toBe(false)
expect(isMemberExpression('obj[arr0]]')).toBe(false)
expect(isMemberExpression('123[a]')).toBe(false)
expect(isMemberExpression('a + b')).toBe(false)
expect(isMemberExpression('foo()')).toBe(false)
})