Skip to content

Commit f054129

Browse files
committed
Merge remote-tracking branch 'upstream/master' into refactor/reactive-vscode
2 parents 15fd06e + ae1d696 commit f054129

File tree

20 files changed

+158
-128
lines changed

20 files changed

+158
-128
lines changed

extensions/vscode/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,7 @@
551551
"devDependencies": {
552552
"@types/semver": "^7.5.3",
553553
"@types/vscode": "^1.82.0",
554-
"@volar/vscode": "~2.4.7",
554+
"@volar/vscode": "~2.4.8",
555555
"@vscode/vsce": "latest",
556556
"@vue/language-core": "2.1.6",
557557
"@vue/language-server": "2.1.6",

packages/component-meta/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"directory": "packages/component-meta"
1414
},
1515
"dependencies": {
16-
"@volar/typescript": "~2.4.7",
16+
"@volar/typescript": "~2.4.8",
1717
"@vue/language-core": "2.1.6",
1818
"path-browserify": "^1.0.1",
1919
"vue-component-type-helpers": "2.1.6"

packages/language-core/lib/codegen/globalTypes.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,11 @@ export function generateGlobalTypes(lib: string, target: number, strictTemplates
9292
function __VLS_getVForSourceType(source: number): [number, number, number][];
9393
function __VLS_getVForSourceType(source: string): [string, number, number][];
9494
function __VLS_getVForSourceType<T extends any[]>(source: T): [
95-
item: T[number],
95+
item: ${(
96+
target >= 3 ? `import('${lib}').Reactive<T[number]>` :
97+
target >= 2.7 ? `import('${lib}').UnwrapNestedRefs<T[number]>` :
98+
`T[number]`
99+
)},
96100
key: number,
97101
index: number,
98102
][];

packages/language-core/lib/codegen/script/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ export function* generateScript(options: ScriptCodegenOptions): Generator<Code,
124124
yield `__VLS_template = () => {${newLine}`;
125125
const templateCodegenCtx = yield* generateTemplate(options, ctx);
126126
yield* generateComponentSelf(options, ctx, templateCodegenCtx);
127-
yield `},${newLine}`;
127+
yield `}${endOfLine}`;
128128
yield generateSfcBlockSection(options.sfc.script, classBlockEnd, options.sfc.script.content.length, codeFeatures.all);
129129
}
130130
}

packages/language-core/lib/codegen/script/scriptSetup.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,7 @@ function* generateModelEmit(
464464
yield `type __VLS_ModelEmit = {${newLine}`;
465465
for (const defineModel of defineModels) {
466466
const [propName, localName] = getPropAndLocalName(scriptSetup, defineModel);
467-
yield `'update:${propName}': [${propName}:`;
467+
yield `'update:${propName}': [value:`;
468468
yield* generateDefinePropType(scriptSetup, propName, localName, defineModel);
469469
yield `]${endOfLine}`;
470470
}

packages/language-core/lib/codegen/template/element.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,8 @@ export function* generateElement(
293293
ctx: TemplateCodegenContext,
294294
node: CompilerDOM.ElementNode,
295295
currentComponent: CompilerDOM.ElementNode | undefined,
296-
componentCtxVar: string | undefined
296+
componentCtxVar: string | undefined,
297+
isVForChild: boolean
297298
): Generator<Code> {
298299
const startTagOffset = node.loc.start.offset + options.template.content.substring(node.loc.start.offset).indexOf(node.tag);
299300
const endTagOffset = !node.isSelfClosing && options.template.lang === 'html'
@@ -350,7 +351,11 @@ export function* generateElement(
350351

351352
const [refName, offset] = yield* generateVScope(options, ctx, node, node.props);
352353
if (refName) {
353-
ctx.templateRefs.set(refName, [`__VLS_nativeElements['${node.tag}']`, offset!]);
354+
let refValue = `__VLS_nativeElements['${node.tag}']`;
355+
if (isVForChild) {
356+
refValue = `[${refValue}]`;
357+
}
358+
ctx.templateRefs.set(refName, [refValue, offset!]);
354359
}
355360
if (ctx.singleRootNode === node) {
356361
ctx.singleRootElType = `typeof __VLS_nativeElements['${node.tag}']`;

packages/language-core/lib/codegen/template/templateChild.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ export function* generateTemplateChild(
3131
node: CompilerDOM.RootNode | CompilerDOM.TemplateChildNode | CompilerDOM.SimpleExpressionNode,
3232
currentComponent: CompilerDOM.ElementNode | undefined,
3333
prevNode: CompilerDOM.TemplateChildNode | undefined,
34-
componentCtxVar: string | undefined
34+
componentCtxVar: string | undefined,
35+
isVForChild: boolean = false
3536
): Generator<Code> {
3637
if (prevNode?.type === CompilerDOM.NodeTypes.COMMENT) {
3738
const commentText = prevNode.content.trim().split(' ')[0];
@@ -82,7 +83,7 @@ export function* generateTemplateChild(
8283
node.tagType === CompilerDOM.ElementTypes.ELEMENT
8384
|| node.tagType === CompilerDOM.ElementTypes.TEMPLATE
8485
) {
85-
yield* generateElement(options, ctx, node, currentComponent, componentCtxVar);
86+
yield* generateElement(options, ctx, node, currentComponent, componentCtxVar, isVForChild);
8687
}
8788
else {
8889
yield* generateComponent(options, ctx, node, currentComponent);

packages/language-core/lib/codegen/template/vFor.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ export function* generateVFor(
8686
}
8787
let prev: CompilerDOM.TemplateChildNode | undefined;
8888
for (const childNode of node.children) {
89-
yield* generateTemplateChild(options, ctx, childNode, currentComponent, prev, componentCtxVar);
89+
yield* generateTemplateChild(options, ctx, childNode, currentComponent, prev, componentCtxVar, true);
9090
prev = childNode;
9191
}
9292
for (const varName of forBlockVars) {

packages/language-core/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"directory": "packages/language-core"
1414
},
1515
"dependencies": {
16-
"@volar/language-core": "~2.4.7",
16+
"@volar/language-core": "~2.4.8",
1717
"@vue/compiler-dom": "^3.5.0",
1818
"@vue/compiler-vue2": "^2.7.16",
1919
"@vue/shared": "^3.5.0",
@@ -26,7 +26,7 @@
2626
"@types/minimatch": "^5.1.2",
2727
"@types/node": "latest",
2828
"@types/path-browserify": "^1.0.1",
29-
"@volar/typescript": "~2.4.7",
29+
"@volar/typescript": "~2.4.8",
3030
"@vue/compiler-sfc": "^3.5.0"
3131
},
3232
"peerDependencies": {

packages/language-plugin-pug/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"@vue/language-core": "2.1.6"
1818
},
1919
"dependencies": {
20-
"@volar/source-map": "~2.4.7",
20+
"@volar/source-map": "~2.4.8",
2121
"volar-service-pug": "0.0.62"
2222
}
2323
}

0 commit comments

Comments
 (0)