Closed
Description
Before You File a Bug Report Please Confirm You Have Done The Following...
- I have tried restarting my IDE and the issue persists.
- I have updated to the latest version of the packages.
What version of ESLint are you using?
9.3.0
What version of eslint-plugin-svelte
are you using?
2.39.0
What did you do?
Configuration
import eslint from '@eslint/js'
import globals from 'globals'
import tsEslint from 'typescript-eslint'
import epSvelte from 'eslint-plugin-svelte'
import svelteParser from 'svelte-eslint-parser'
export default [
eslint.configs.recommended,
...tsEslint.configs.strictTypeChecked,
...tsEslint.configs.stylisticTypeChecked,
...epSvelte.configs['flat/recommended'],
{
languageOptions: {
parser: tsEslint.parser,
parserOptions: {
project: true,
programs: false,
extraFileExtensions: ['.astro','.svelte']
},
globals: {
...globals.browser
}
},
},
{
files: ['**/*.svelte'],
languageOptions: {
parser: svelteParser,
parserOptions: {
parser: tsEslint.parser,
}
},
},
]
While both .svelte and .js files are scanned by ESLint the same function yields different results:
// test.svelte
<script>
/** @param {number} x */
function test(x) {
return x+1
}
</script>
// test.js
/** @param {number} x */
function test(x) {
return x+1
}
npx eslint src
test.js
2:10 error 'test' is defined but never used @typescript-eslint/no-unused-vars
test.svelte
3:12 error 'test' is defined but never used @typescript-eslint/no-unused-vars
4:5 error Unsafe return of an `any` typed value @typescript-eslint/no-unsafe-return
5:12 error Invalid operand for a '+' operation. Operands must each be a number or string. Got `any` @typescript-eslint/restrict-plus-operands
What did you expect to happen?
I expected the same code to produce the same warnings, irrespective of appearing in a .svelte or .js file.
What actually happened?
It seems like the typescript-eslint parser cannot parse type information from the code in the .svelte files. Maybe the svelte-parser strips JSDoc comments from the code before forwarding it to the typescript parser?
Link to GitHub Repo with Minimal Reproducible Example
https://github.com/falco467/svelte-jsdoc-typescript-example
Additional comments
No response