fix(compiler-sfc): parses correctly when inline mode is off (#8337)

close #6088
This commit is contained in:
白雾三语 2023-05-18 13:07:08 +08:00 committed by GitHub
parent b133e0fd97
commit ecbd42a144
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 1 deletions

View File

@ -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', () => {

View File

@ -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)
}
}