Port PR#60234: Use signature.parameters directly instead of getExpandedParameters #1861
+2,630
−596
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR ports microsoft/TypeScript#60234 to the Go implementation, bringing TypeScript emit closer to what an external tool could produce without full type information.
Changes
Modified
internal/checker/nodebuilderimpl.go
in thesignatureToSignatureDeclarationHelper
function:getExpandedParameters
signature.parameters
directly when callingenterNewScope
Impact
This change improves how rest parameter types are displayed in function signatures:
Before:
After:
The improved signatures are more readable and natural, better matching how developers would write them manually. This affects 111 baseline files, primarily in tests dealing with rest parameters, variadic tuples, and contextual typing.
Note on Partial Port
The original TypeScript PR made two changes:
checker.ts
: Usesignature.parameters
directly instead ofgetExpandedParameters
- ✅ Applied hereexpressionToTypeNode.ts
: MaketypeFromFunctionLikeExpression
return a proper function type node -This partial port provides immediate benefits. The full benefits of the PR will be realized when
expressionToTypeNode.ts
is eventually ported to Go, which would enable usingtypeof
references in return types (e.g.,a: typeof a
instead ofa: [n: "n", a: "a"]
).Testing
Original prompt
Note
Custom agent used: Strada to Corsa Port Expert
A Go and TypeScript expert who can easily figure out how to port PRs from one language to another
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.