Explorar o código

fix(compiler): generate correct mappings for v-for and object properties (#69)

Rahul Kadyan %!s(int64=6) %!d(string=hai) anos
pai
achega
a407b16b2b

+ 3 - 2
packages/compiler-core/src/codegen.ts

@@ -130,7 +130,7 @@ function createCodegenContext(
             }
           })
         }
-        advancePositionWithMutation(context, code)
+        if (code) advancePositionWithMutation(context, code)
         if (node && !openOnly) {
           context.map.addMapping({
             source: context.filename,
@@ -518,7 +518,8 @@ function genObjectExpression(node: ObjectExpression, context: CodegenContext) {
   push(multilines ? `{` : `{ `)
   multilines && indent()
   for (let i = 0; i < properties.length; i++) {
-    const { key, value } = properties[i]
+    const { key, value, loc } = properties[i]
+    push('', { loc } as any, true) // resets source mapping for every property.
     // key
     genExpressionAsPropertyKey(key, context)
     push(`: `)

+ 2 - 1
packages/compiler-core/src/transforms/transformElement.ts

@@ -25,6 +25,7 @@ import {
   MERGE_PROPS,
   TO_HANDLERS
 } from '../runtimeConstants'
+import { getInnerRange } from '../utils'
 
 const toValidId = (str: string): string => str.replace(/[^\w]/g, '')
 
@@ -121,7 +122,7 @@ function buildProps(
       const { loc, name, value } = prop
       properties.push(
         createObjectProperty(
-          createExpression(name, true, loc),
+          createExpression(name, true, getInnerRange(loc, 0, name.length)),
           createExpression(
             value ? value.content : '',
             true,

+ 1 - 1
packages/compiler-core/src/transforms/vFor.ts

@@ -25,7 +25,7 @@ export const transformFor = createStructuralDirectiveTransform(
 
         context.replaceNode({
           type: NodeTypes.FOR,
-          loc: node.loc,
+          loc: dir.loc,
           source,
           valueAlias: value,
           keyAlias: key,