wip: fix binding type fallback

This commit is contained in:
Evan You 2020-11-10 17:31:09 -05:00
parent 886ed7681d
commit 3019508e75
3 changed files with 8 additions and 9 deletions

View File

@ -227,7 +227,7 @@ export function generate(
if (genScopeId) {
push(`${PURE_ANNOTATION}_withId(`)
}
push(`() => {`)
push(`(_ctx, _cache${optimizeSources}) => {`)
} else {
if (genScopeId) {
push(`const render = ${PURE_ANNOTATION}_withId(`)

View File

@ -100,19 +100,17 @@ export function processExpression(
const { inline, inlinePropsIdentifier, bindingMetadata } = context
const prefix = (raw: string) => {
const type = hasOwn(bindingMetadata, raw) && bindingMetadata[raw]
if (inline) {
// setup inline mode, it's either props or setup
if (bindingMetadata[raw] !== 'setup') {
// setup inline mode
if (type === 'props') {
return `${inlinePropsIdentifier}.${raw}`
} else {
} else if (type === 'setup') {
return `${context.helperString(UNREF)}(${raw})`
}
} else {
const source = hasOwn(bindingMetadata, raw)
? `$` + bindingMetadata[raw]
: `_ctx`
return `${source}.${raw}`
}
// fallback to normal
return `${type ? `$${type}` : `_ctx`}.${raw}`
}
// fast path if expression is a simple identifier.

View File

@ -685,6 +685,7 @@ export function compileScript(
if (script) {
if (startOffset < scriptStartOffset!) {
// <script setup> before <script>
s.remove(0, startOffset)
s.remove(endOffset, scriptStartOffset!)
s.remove(scriptEndOffset!, source.length)
} else {