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)`)
|
expect(content).toMatch(`"--${mockId}-count": (count.value)`)
|
||||||
assertCode(content)
|
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', () => {
|
describe('with TypeScript', () => {
|
||||||
|
|
|
@ -83,7 +83,9 @@ function processExp(exp: string, dir?: string): string {
|
||||||
} else if (dir === 'for') {
|
} else if (dir === 'for') {
|
||||||
const inMatch = exp.match(forAliasRE)
|
const inMatch = exp.match(forAliasRE)
|
||||||
if (inMatch) {
|
if (inMatch) {
|
||||||
const [, LHS, RHS] = inMatch
|
let [, LHS, RHS] = inMatch
|
||||||
|
// #6088
|
||||||
|
LHS = LHS.trim().replace(/^\(|\)$/g, '')
|
||||||
return processExp(`(${LHS})=>{}`) + processExp(RHS)
|
return processExp(`(${LHS})=>{}`) + processExp(RHS)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue