TSX Default Generic Arrow Function Syntax Highlighting

Open
#990 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
typescript
Domain
tooling

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.

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

Dominant language
TypeScript
Stars
471
Forks
149
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from microsoft/TypeScript-TmLanguage

All issues in microsoft/TypeScript-TmLanguage

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.