fix(compiler-core): more robust member expression check in Node
This commit is contained in:
		
							parent
							
								
									686d0149b6
								
							
						
					
					
						commit
						6257adeaac
					
				@ -105,7 +105,6 @@ describe('isMemberExpression', () => {
 | 
				
			|||||||
    expect(fn('objfoo]')).toBe(false)
 | 
					    expect(fn('objfoo]')).toBe(false)
 | 
				
			||||||
    expect(fn('obj[arr[0]')).toBe(false)
 | 
					    expect(fn('obj[arr[0]')).toBe(false)
 | 
				
			||||||
    expect(fn('obj[arr0]]')).toBe(false)
 | 
					    expect(fn('obj[arr0]]')).toBe(false)
 | 
				
			||||||
    expect(fn('123[a]')).toBe(false)
 | 
					 | 
				
			||||||
    expect(fn('a + b')).toBe(false)
 | 
					    expect(fn('a + b')).toBe(false)
 | 
				
			||||||
    expect(fn('foo()')).toBe(false)
 | 
					    expect(fn('foo()')).toBe(false)
 | 
				
			||||||
    expect(fn('a?b:c')).toBe(false)
 | 
					    expect(fn('a?b:c')).toBe(false)
 | 
				
			||||||
@ -114,6 +113,7 @@ describe('isMemberExpression', () => {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  test('browser', () => {
 | 
					  test('browser', () => {
 | 
				
			||||||
    commonAssertions(isMemberExpressionBrowser)
 | 
					    commonAssertions(isMemberExpressionBrowser)
 | 
				
			||||||
 | 
					    expect(isMemberExpressionBrowser('123[a]')).toBe(false)
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  test('node', () => {
 | 
					  test('node', () => {
 | 
				
			||||||
@ -126,6 +126,8 @@ describe('isMemberExpression', () => {
 | 
				
			|||||||
    expect(fn(`foo.bar as string`)).toBe(true)
 | 
					    expect(fn(`foo.bar as string`)).toBe(true)
 | 
				
			||||||
    expect(fn(`foo['bar'] as string`)).toBe(true)
 | 
					    expect(fn(`foo['bar'] as string`)).toBe(true)
 | 
				
			||||||
    expect(fn(`foo[bar as string]`)).toBe(true)
 | 
					    expect(fn(`foo[bar as string]`)).toBe(true)
 | 
				
			||||||
 | 
					    expect(fn(`(foo as string)`)).toBe(true)
 | 
				
			||||||
 | 
					    expect(fn(`123[a]`)).toBe(true)
 | 
				
			||||||
    expect(fn(`foo() as string`)).toBe(false)
 | 
					    expect(fn(`foo() as string`)).toBe(false)
 | 
				
			||||||
    expect(fn(`a + b as string`)).toBe(false)
 | 
					    expect(fn(`a + b as string`)).toBe(false)
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
				
			|||||||
@ -165,10 +165,6 @@ export const isMemberExpressionNode = (
 | 
				
			|||||||
  path: string,
 | 
					  path: string,
 | 
				
			||||||
  context: TransformContext
 | 
					  context: TransformContext
 | 
				
			||||||
): boolean => {
 | 
					): boolean => {
 | 
				
			||||||
  path = path.trim()
 | 
					 | 
				
			||||||
  if (!validFirstIdentCharRE.test(path[0])) {
 | 
					 | 
				
			||||||
    return false
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  try {
 | 
					  try {
 | 
				
			||||||
    let ret: Expression = parseExpression(path, {
 | 
					    let ret: Expression = parseExpression(path, {
 | 
				
			||||||
      plugins: [...context.expressionPlugins, ...babelParserDefaultPlugins]
 | 
					      plugins: [...context.expressionPlugins, ...babelParserDefaultPlugins]
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user