vuejs / language-tools

⚡ High-performance Vue language tooling based-on Volar.js
https://marketplace.visualstudio.com/items?itemName=Vue.volar
MIT License
5.55k stars 373 forks source link

Project doesn't build if using v-memo on list rendering since v2.0.18 #4409

Closed guilhermeportela closed 1 month ago

guilhermeportela commented 1 month ago

Version

Verifiable on v2.0.18 and v2.0.19

Minimal reproduction

<script setup lang="ts">
const items = [
  {text: "foo"},
  {text: "bar"}
];
</script>

<template>
  <div v-for="(item, index) in items" v-bind:key="index" v-memo="[item.text]">
    {{ item.text }}
  </div>
</template>

OR StackBlitz project: https://stackblitz.com/edit/vitejs-vite-bl8boa

Steps to reproduce

Run npm run build (or just vue-tsc) on a project that a component uses list rendering with v-memo.

What is expected?

Minimal valid code to build.

What is actually happening?

vue-tsc fails with the following message:

TypeError: Cannot read properties of undefined (reading 'type')
    at generateVFor ([PROJECT PATH]/node_modules/.pnpm/@vue+language-core@2.0.18_typescript@5.4.5/node_modules/@vue/language-core/lib/codegen/template/vFor.js:40:33)
    at generateVFor.next (<anonymous>)
    at generateTemplateChild ([PROJECT PATH]/node_modules/.pnpm/@vue+language-core@2.0.18_typescript@5.4.5/node_modules/@vue/language-core/lib/codegen/template/templateChild.js:94:40)
    at generateTemplateChild.next (<anonymous>)
    at generateTemplateChild ([PROJECT PATH]/node_modules/.pnpm/@vue+language-core@2.0.18_typescript@5.4.5/node_modules/@vue/language-core/lib/codegen/template/templateChild.js:43:20)
    at generateTemplateChild.next (<anonymous>)
    at generateTemplate ([PROJECT PATH]/node_modules/.pnpm/@vue+language-core@2.0.18_typescript@5.4.5/node_modules/@vue/language-core/lib/codegen/template/index.js:20:58)
    at generateTemplate.next (<anonymous>)
    at [PROJECT PATH]/node_modules/.pnpm/@vue+language-core@2.0.18_typescript@5.4.5/node_modules/@vue/language-core/lib/plugins/vue-tsx.js:80:31
    at [PROJECT PATH]/node_modules/.pnpm/computeds@0.0.1/node_modules/computeds/out/computed.js:13:68
src/main.ts:3:17 - error TS2306: File '[PROJECT PATH]/src/App.vue' is not a module.
so1ve commented 1 month ago

Thanks for the report, I've confirmed this is an upstream issue. I'll raise a PR in vue core.

ThommyTheThird commented 3 weeks ago

Sorry for necroposting, but it does not seem to be fixed in 2.0.19? I am still running into the same error (edit: Apologize, I now see OP specified the issue also occurs in 19. Will this fix be included in the next release (2.0.20?))

so1ve commented 3 weeks ago

Yes