From e6544ac292b5b473274f87cdb83ebeac3e7e61a4 Mon Sep 17 00:00:00 2001 From: zhiyuanzmj <260480378@qq.com> Date: Wed, 5 Nov 2025 17:17:49 +0800 Subject: [PATCH] fix(compiler-core): correctly handle ts type assertions in expressions (#13397) similar to #13395 --- .../__snapshots__/transformExpressions.spec.ts.snap | 10 ++++++++++ .../transforms/transformExpressions.spec.ts | 8 ++++++++ .../src/transforms/transformExpression.ts | 12 ++++++++---- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/packages/compiler-core/__tests__/transforms/__snapshots__/transformExpressions.spec.ts.snap b/packages/compiler-core/__tests__/transforms/__snapshots__/transformExpressions.spec.ts.snap index 5a94de5a68..8907962d81 100644 --- a/packages/compiler-core/__tests__/transforms/__snapshots__/transformExpressions.spec.ts.snap +++ b/packages/compiler-core/__tests__/transforms/__snapshots__/transformExpressions.spec.ts.snap @@ -14,6 +14,16 @@ return function render(_ctx, _cache, $props, $setup, $data, $options) { }" `; +exports[`compiler: expression transform > expression with type 1`] = ` +"const { openBlock: _openBlock, createElementBlock: _createElementBlock } = Vue + +return function render(_ctx, _cache) { + return (_openBlock(), _createElementBlock("div", { + onClick: _ctx.handleClick + }, null, 8 /* PROPS */, ["onClick"])) +}" +`; + exports[`compiler: expression transform > should allow leak of var declarations in for loop 1`] = ` "const { openBlock: _openBlock, createElementBlock: _createElementBlock } = Vue diff --git a/packages/compiler-core/__tests__/transforms/transformExpressions.spec.ts b/packages/compiler-core/__tests__/transforms/transformExpressions.spec.ts index 2f1e6eb641..47627ffa8d 100644 --- a/packages/compiler-core/__tests__/transforms/transformExpressions.spec.ts +++ b/packages/compiler-core/__tests__/transforms/transformExpressions.spec.ts @@ -754,4 +754,12 @@ describe('compiler: expression transform', () => { expect(code).toMatch(`_ctx.bar`) }) }) + + test('expression with type', () => { + const { code } = compile( + `