Visitar URL original
fix(compiler-vapor): prefix cached expression names that start with a digit by ValentinYoushkevich · Pull Request #15828 · vuejs/core · GitHub
Skip to content

fix(compiler-vapor): prefix cached expression names that start with a digit - #15828

Merged
edison1105 merged 1 commit into
vuejs:minorfrom
ValentinYoushkevich:fix/vapor-cached-exp-leading-digit
Oct 9, 2026
Merged

edison1105 merged 1 commit into
vuejs:minorfrom
ValentinYoushkevich:fix/vapor-cached-exp-leading-digit

Conversation

@ValentinYoushkevich

Copy link
Copy Markdown
Contributor

When a template repeats an expression that starts with a number literal and also uses it inside a larger expression, the vapor compiler throws SyntaxError: A numeric separator is only allowed between two digits. Typical SVG case: :cx="0.5 * size" :cy="0.5 * size" :r="0.5 * size - 0.5 * strokeWidth".

The repeated-expression cache names the variable after its source (0_5_size), splices that name into the larger expression and re-parses it, and a name starting with a digit is not a valid identifier. The fix prefixes such names with _. Templates that already compiled only see the local variable renamed (_2_r → __2_r).

Real-world example, also @vue-vkui/vkui@0.1.1 src/components/OldSpinner/AndroidSpinner.vue.

Playground

@coderabbitai

coderabbitai Bot commented Oct 9, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: f17c4889-24a3-44c2-b844-51f4c4c8eb8e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@pkg-pr-new

pkg-pr-new Bot commented Oct 9, 2026

Copy link
Copy Markdown

Open in StackBlitz

@vue/compiler-core

pnpm add https://pkg.pr.new/@vue/compiler-core@15828
npm i https://pkg.pr.new/@vue/compiler-core@15828
yarn add https://pkg.pr.new/@vue/compiler-core@15828.tgz

@vue/compiler-dom

pnpm add https://pkg.pr.new/@vue/compiler-dom@15828
npm i https://pkg.pr.new/@vue/compiler-dom@15828
yarn add https://pkg.pr.new/@vue/compiler-dom@15828.tgz

@vue/compiler-sfc

pnpm add https://pkg.pr.new/@vue/compiler-sfc@15828
npm i https://pkg.pr.new/@vue/compiler-sfc@15828
yarn add https://pkg.pr.new/@vue/compiler-sfc@15828.tgz

@vue/compiler-ssr

pnpm add https://pkg.pr.new/@vue/compiler-ssr@15828
npm i https://pkg.pr.new/@vue/compiler-ssr@15828
yarn add https://pkg.pr.new/@vue/compiler-ssr@15828.tgz

@vue/compiler-vapor

pnpm add https://pkg.pr.new/@vue/compiler-vapor@15828
npm i https://pkg.pr.new/@vue/compiler-vapor@15828
yarn add https://pkg.pr.new/@vue/compiler-vapor@15828.tgz

@vue/reactivity

pnpm add https://pkg.pr.new/@vue/reactivity@15828
npm i https://pkg.pr.new/@vue/reactivity@15828
yarn add https://pkg.pr.new/@vue/reactivity@15828.tgz

@vue/runtime-core

pnpm add https://pkg.pr.new/@vue/runtime-core@15828
npm i https://pkg.pr.new/@vue/runtime-core@15828
yarn add https://pkg.pr.new/@vue/runtime-core@15828.tgz

@vue/runtime-dom

pnpm add https://pkg.pr.new/@vue/runtime-dom@15828
npm i https://pkg.pr.new/@vue/runtime-dom@15828
yarn add https://pkg.pr.new/@vue/runtime-dom@15828.tgz

@vue/runtime-vapor

pnpm add https://pkg.pr.new/@vue/runtime-vapor@15828
npm i https://pkg.pr.new/@vue/runtime-vapor@15828
yarn add https://pkg.pr.new/@vue/runtime-vapor@15828.tgz

@vue/server-renderer

pnpm add https://pkg.pr.new/@vue/server-renderer@15828
npm i https://pkg.pr.new/@vue/server-renderer@15828
yarn add https://pkg.pr.new/@vue/server-renderer@15828.tgz

@vue/shared

pnpm add https://pkg.pr.new/@vue/shared@15828
npm i https://pkg.pr.new/@vue/shared@15828
yarn add https://pkg.pr.new/@vue/shared@15828.tgz

vue

pnpm add https://pkg.pr.new/vue@15828
npm i https://pkg.pr.new/vue@15828
yarn add https://pkg.pr.new/vue@15828.tgz

@vue/compat

pnpm add https://pkg.pr.new/@vue/compat@15828
npm i https://pkg.pr.new/@vue/compat@15828
yarn add https://pkg.pr.new/@vue/compat@15828.tgz

commit: 9d2ccc0

@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown

Size Report

Bundles

File Size Gzip Brotli
compiler-dom.global.prod.js 87.2 kB 30.6 kB 26.9 kB
runtime-dom.global.prod.js 117 kB 43.9 kB 39.4 kB
vue.global.prod.js 177 kB 64.1 kB 57 kB

Usages

Name Size Gzip Brotli
createApp (CAPI only) 53.2 kB 20.7 kB 18.9 kB
createApp 62 kB 23.9 kB 21.8 kB
createApp + vaporInteropPlugin 132 kB 47.5 kB 42.7 kB
createVaporApp 34.4 kB 13.2 kB 12.2 kB
createSSRApp 67 kB 26 kB 23.6 kB
createVaporSSRApp 41.2 kB 15.7 kB 14.3 kB
defineCustomElement 68.5 kB 25.9 kB 23.6 kB
defineVaporCustomElement 49 kB 17.9 kB 16.4 kB
overall 77.6 kB 29.5 kB 26.7 kB

@edison1105 edison1105 added the scope: vapor related to vapor mode label Oct 9, 2026
@edison1105
edison1105 merged commit c0fdcc7 into vuejs:minor Oct 9, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

scope: vapor related to vapor mode

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants