mirror of https://github.com/vuejs/core.git
fix(compiler-sfc): parses correctly when inline mode is off (#8337)
close #6088
This commit is contained in:
parent
b133e0fd97
commit
ecbd42a144
|
@ -804,6 +804,25 @@ describe('SFC compile <script setup>', () => {
|
|||
expect(content).toMatch(`"--${mockId}-count": (count.value)`)
|
||||
assertCode(content)
|
||||
})
|
||||
|
||||
test('the v-for wrapped in parentheses can be correctly parsed & inline is false', () => {
|
||||
expect(() =>
|
||||
compile(
|
||||
`
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue'
|
||||
const stacks = ref([])
|
||||
</script>
|
||||
<template>
|
||||
<div v-for="({ file: efile }) of stacks"></div>
|
||||
</template>
|
||||
`,
|
||||
{
|
||||
inlineTemplate: false
|
||||
}
|
||||
)
|
||||
).not.toThrowError()
|
||||
})
|
||||
})
|
||||
|
||||
describe('with TypeScript', () => {
|
||||
|
|
|
@ -83,7 +83,9 @@ function processExp(exp: string, dir?: string): string {
|
|||
} else if (dir === 'for') {
|
||||
const inMatch = exp.match(forAliasRE)
|
||||
if (inMatch) {
|
||||
const [, LHS, RHS] = inMatch
|
||||
let [, LHS, RHS] = inMatch
|
||||
// #6088
|
||||
LHS = LHS.trim().replace(/^\(|\)$/g, '')
|
||||
return processExp(`(${LHS})=>{}`) + processExp(RHS)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue