microsoft / microsoft/TypeScript-TmLanguage
TSX Default Generic Arrow Function Syntax Highlighting
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 471
- Forks
- 149
- PR merge metrics
- No merged PRs in 30d
Description
Does this issue occur when all extensions are disabled?: Yes
- VS Code Version: Version: 1.78.2
- OS Version: Darwin arm64 21.3.0
Related to https://github.com/microsoft/TypeScript/issues/47062
TSC has been updated to successfully parse the below TSX code snippet:
const Component = <T = undefined>(props: PropType<T>) => <p>content</p>
however this currently breaks the syntax highlighting in VSCode's typescriptreact parser.
The same can be said for the trailing comma added by prettier (3.0.3):
const Component = <T = undefined,>(props: PropType<T>) => <p>content</p>
Some short term work-arounds are available:
Using extends
const Component = <T extends unknown = undefined>(props: PropType<T>) => <p>content</p>
Using function syntax
const Component = function<T = undefined>(props: PropType<T>) {
return <p>content</p>
}
Despite these workarounds, the original code seems syntactically valid, and more concise, so I believe this to be a bug
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the two generic-arrow-function snippets in VS Code with the typescriptreact parser and compare their highlighting with the workaround examples. Then inspect the repository's TextMate grammar files for the TypeScript JSX rules; done means both valid forms highlight correctly without regressing the shown workarounds.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100