]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
wip: save
authordaiwei <daiwei521@126.com>
Thu, 12 Dec 2024 01:08:17 +0000 (09:08 +0800)
committerdaiwei <daiwei521@126.com>
Thu, 12 Dec 2024 01:08:17 +0000 (09:08 +0800)
packages/compiler-vapor/src/generators/operation.ts
packages/compiler-vapor/src/generators/prop.ts

index f40eeba232c8d0bfeb435c4d0b7bce07ff2aba8a..3d1ab1e2be84d649b5519afd958cf2c307166485 100644 (file)
@@ -100,7 +100,7 @@ export function genEffects(
     push(`)`)
   }
 
-  // declare variables: let _foo, _bar
+  // declare variables: let _foo, __foo
   if (declareNames.size) {
     frag.splice(1, 0, `let ${[...declareNames].join(', ')}`, NEWLINE)
   }
@@ -125,43 +125,28 @@ export function genEffect(
     allDeclareNames.add([...preAccessNames].join(', '))
   }
 
+  // pre access: __foo = _ctx.foo
   const accessExps: CodeFragment[] =
     preAccessExps.size > 0 ? [[...preAccessExps].join(';'), NEWLINE] : []
-  // const newlineCount = operationsExps.filter(frag => frag === NEWLINE).length
-  // if (newlineCount > 1) {
-  // multiline check expression: if (_foo !== _ctx.foo || _bar !== _ctx.bar) {
-  const checkExpsStart: CodeFragment[] =
+  // check start: if (_foo !== __foo) {
+  const checkStartExps: CodeFragment[] =
     earlyCheckExps.length > 0
       ? [`if(`, ...earlyCheckExps.join(' || '), `) {`, INDENT_START]
       : []
-  const checkExpsEnd: CodeFragment[] =
+  // check end: }
+  const checkEndExps: CodeFragment[] =
     earlyCheckExps.length > 0 ? [INDENT_END, NEWLINE, '}'] : []
-  // assignment: _foo = _ctx.foo; _bar = _ctx.bar
+  // assignment: _foo = __foo
   const assignmentExps: CodeFragment[] =
     earlyCheckExps.length > 0
       ? [NEWLINE, ...earlyCheckExps.map(c => c.replace('!==', '=')).join(';')]
       : []
   push(
     ...accessExps,
-    ...checkExpsStart,
+    ...checkStartExps,
     ...operationsExps,
     ...assignmentExps,
-    ...checkExpsEnd,
+    ...checkEndExps,
   )
-  // } else {
-  // single line check expression: (_foo !== _ctx.foo || _bar !== _ctx.bar) &&
-  // const multiple = earlyCheckExps.length > 1
-  // const checkExps: CodeFragment[] =
-  //   earlyCheckExps.length > 0
-  //     ? [
-  //         multiple ? `(` : undefined,
-  //         ...earlyCheckExps.join(' || '),
-  //         multiple ? `)` : undefined,
-  //         ' && ',
-  //       ]
-  //     : []
-  // push(...checkExps, ...operationsExps.filter(frag => frag !== NEWLINE))
-  // }
-
   return frag
 }
index f2ef4948579096e1a5ac0fbfc8ed31e895feaf15..cf1bce982e0596f12d4809ca1350e810351c3d1e 100644 (file)
@@ -46,16 +46,10 @@ export function genSetProp(
   } = oper
   const { helperName, omitKey } = getRuntimeHelper(tag, key.content, modifier)
   const propValue = genPropValue(values, context)
-  const { prevValueName, shouldWrapInParentheses } = processPropValues(
-    context,
-    helperName,
-    [propValue],
-  )
+  const { prevValueName } = processPropValues(context, helperName, [propValue])
   return [
     NEWLINE,
-    ...(prevValueName
-      ? [shouldWrapInParentheses ? `(` : undefined, `${prevValueName} = `]
-      : []),
+    ...(prevValueName ? [`${prevValueName} = `] : []),
     ...genCall(
       [helper(helperName), null],
       `n${oper.element}`,
@@ -67,7 +61,6 @@ export function genSetProp(
         ? 'true'
         : undefined,
     ),
-    ...(prevValueName && shouldWrapInParentheses ? [`)`] : []),
   ]
 }
 
@@ -84,16 +77,14 @@ export function genDynamicProps(
         ? genLiteralObjectProps([props], context) // dynamic arg props
         : genExpression(props.value, context),
   ) // v-bind=""
-  const { prevValueName, shouldWrapInParentheses } = processPropValues(
+  const { prevValueName } = processPropValues(
     context,
     'setDynamicProps',
     values,
   )
   return [
     NEWLINE,
-    ...(prevValueName
-      ? [shouldWrapInParentheses ? `(` : undefined, `${prevValueName} = `]
-      : []),
+    ...(prevValueName ? [`${prevValueName} = `] : []),
     ...genCall(
       helper('setDynamicProps'),
       `n${oper.element}`,
@@ -101,7 +92,6 @@ export function genDynamicProps(
       genMulti(DELIMITERS_ARRAY, ...values),
       oper.root && 'true',
     ),
-    ...(prevValueName && shouldWrapInParentheses ? [`)`] : []),
   ]
 }
 
@@ -241,12 +231,8 @@ function processPropValues(
   context: CodegenContext,
   helperName: string,
   values: CodeFragment[][],
-): { prevValueName: string | undefined; shouldWrapInParentheses: boolean } {
+): { prevValueName: string | undefined } {
   const { shouldCacheRenderEffectDeps, processingRenderEffect } = context
-  // single-line render effect and the operation needs cache return a value,
-  // the expression needs to be wrapped in parentheses.
-  // e.g. _foo === _ctx.foo && (_prev_foo = _setStyle(...))
-  let shouldWrapInParentheses: boolean = false
   let prevValueName
   if (shouldCacheRenderEffectDeps()) {
     const { declareNames, preAccessNames, preAccessExps } =
@@ -268,10 +254,9 @@ function processPropValues(
       }
       declareNames.add(prevValueName)
     }
-    shouldWrapInParentheses = false //operations.length === 1
   }
 
-  return { prevValueName, shouldWrapInParentheses }
+  return { prevValueName }
 }
 
 export function processValues(
@@ -301,15 +286,12 @@ function processValue(
   const { declareNames, earlyCheckExps, preAccessNames, preAccessExps } =
     processingRenderEffect!
 
-  // const isSingleLine = operations.length === 1
   for (const frag of values) {
     if (!isArray(frag)) continue
-    // [code, newlineIndex, loc, name] -> [(_name = code), newlineIndex, loc, name]
+    // [code, newlineIndex, loc, name] -> [(__name), newlineIndex, loc, name]
     const [newName, , , rawName] = frag
     if (rawName) {
       let name = rawName.replace(/[^\w]/g, '_')
-      // if (rewrittenNames.has(name)) continue
-      // rewrittenNames.add(name)
 
       name = `_${name}`
       if (!declareNames.has(name)) {
@@ -324,6 +306,7 @@ function processValue(
       preAccessExps.add(`${preAccessName} = ${newName}`)
       earlyCheckExps.push(`${name} !== ${preAccessName}`)
       if (needRewrite) {
+        // replace the original name with the preAccessName
         frag[0] = `${preAccessName}`
       }
     }