[X] I'm sure the problem is a parser problem. (If you are not sure, search for the issue in eslint-plugin-vue repo and open the issue in eslint-plugin-vue repo if there is no solution.
[X] I have tried restarting my IDE and the issue persists.
[X] I have updated to the latest version of the packages.
What version of ESLint are you using?
8.41.0
What version of eslint-plugin-vue and vue-eslint-parser are you using?
Generic type argument doesn't trigger the no-undef rule when being used in the <script setup lang="ts">...</script> block alongside a normal <script lang="ts">...</script> block
What actually happened?
When using a normal <script lang="ts">...</script> block alongside a <script setup lang="ts" generic="T">...</script>, generics trigger the no-undef rule from eslint's core ruleset.
I'm sure this problem belong to this repo because the faulty rule is from eslint core itself
In my repo, I found out that mixing both types of script blocks means that imports could only be inside the non-setup script block
While creating the reproduction repository, I also found out that vue-eslint-parser thinks that <script setup> is part of the template when mixed with the <script> tag. I use prettier in my original repo, so these issues were turned off by eslint-config-prettier, but if you run eslint on the reproduction repository (which doesn't have prettier), besides the no-undef rule being triggered in the Triggered.vue file, additional problems will be applied to the block itself, like vue/no-parsing-error and vue/html-closing-bracket-newlines.
TLDR: It looks like vue-eslint-parser isn't build towards considering <script>...</script> and <script setup>...</script> can be mixed together
Before You File a Bug Report Please Confirm You Have Done The Following...
What version of ESLint are you using?
8.41.0
What version of
eslint-plugin-vue
andvue-eslint-parser
are you using?What did you do?
Configuration
``` parser: 'vue-eslint-parser', parserOptions: { parser: '@typescript-eslint/parser', sourceType: 'module' }, ```What did you expect to happen?
Generic type argument doesn't trigger the
no-undef
rule when being used in the<script setup lang="ts">...</script>
block alongside a normal<script lang="ts">...</script>
blockWhat actually happened?
When using a normal
<script lang="ts">...</script>
block alongside a<script setup lang="ts" generic="T">...</script>
, generics trigger theno-undef
rule from eslint's core ruleset.Link to Minimal Reproducible Example
Minimal reproduction: https://github.com/ferferga/vue-eslint-parser-repro Original repository affected with the issue: https://github.com/jellyfin/jellyfin-vue
Additional comments
vue-eslint-parser
thinks that<script setup>
is part of the template when mixed with the<script>
tag. I use prettier in my original repo, so these issues were turned off byeslint-config-prettier
, but if you run eslint on the reproduction repository (which doesn't have prettier), besides theno-undef
rule being triggered in theTriggered.vue
file, additional problems will be applied to the block itself, likevue/no-parsing-error
andvue/html-closing-bracket-newlines
.TLDR: It looks like
vue-eslint-parser
isn't build towards considering<script>...</script>
and<script setup>...</script>
can be mixed together