Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ignore non-ts/js files in move to file refactor #56749

Open
6 tasks done
jasonlyu123 opened this issue Dec 12, 2023 · 6 comments
Open
6 tasks done

Ignore non-ts/js files in move to file refactor #56749

jasonlyu123 opened this issue Dec 12, 2023 · 6 comments
Assignees
Labels
Bug A bug in TypeScript

Comments

@jasonlyu123
Copy link
Contributor

πŸ” Search Terms

move to file, has unknown extension.

βœ… Viability Checklist

⭐ Suggestion

In getMoveToRefactoringFileSuggestions, changes to use tryGetExtensionFromPath to filter candidate files to move to. And ignore the unknown file extension. It would be nice if it could fall back or switch to using SourceFile.scriptKind and SourceFile.isDeclarationFile, but ignoring unknown extensions for at least the candidates should be fine.

πŸ“ƒ Motivating Example

The "Move to file" refactor currently errors if the program contains any source files with a file extension unknown to TypeScript.
Is it possible to remove this restriction? The error is because the getMoveToRefactoringFileSuggestions method uses the extensionFromPath function to find candidates from all the files in the program. If any typescript plugin provides external files with non-ts/js file extension, This will result in a Debug.assert error. For example, mrmckeb/typescript-plugin-css-modules#241

Most of the other language service features don't have this restriction. At least it won't error whenever one external file is in the program. It would be nice if this feature could work with other file extensions. And even allow this feature to be used in other language servers that wrap typescript language service.

πŸ’» Use Cases

  • What do you want to use this for?
    Using the move to file refactor in projects where a typescript plugin adds a custom module, like vue and svelte.

  • Workarounds I can think of
    The TypeScript plugins monkey patch program.getSourceFiles before calling the getMoveToRefactoringFileSuggestions and restoring it afterwards.

@mrmckeb
Copy link

mrmckeb commented Feb 11, 2024

Thanks for raising this @jasonlyu123!

I've only had the two reports of this issue so far, @RyanCavanaugh and @navya9singh, but if there's anything I can do on the plugin side to mitigate this, please let me know!

@itsMapleLeaf
Copy link

itsMapleLeaf commented Jun 14, 2024

I regularly encounter this while using the Astro and MDX extensions in VSCode. Are there any workarounds for this, other than disabling those extensions before running the refactor?

@alonesuperman
Copy link

Need it. I believe this situation will occur frequently in Vue projects.

@kongmoumou
Copy link

kongmoumou commented Aug 1, 2024

Facing same issue on all vue project 🀯, TS version 5.x.

@pabletecodes
Copy link

πŸ‘. I just encountered this issue when using "Move to file" in VSCode with Typescript Version 4.9.5.

@stevefan1999-personal
Copy link

This is quite an annoying problem in Astro

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug A bug in TypeScript
Projects
None yet
Development

No branches or pull requests

9 participants