Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions internal/checker/pseudotypenodebuilder.go
Original file line number Diff line number Diff line change
Expand Up @@ -258,15 +258,17 @@ func (b *NodeBuilderImpl) pseudoParameterToNode(p *pseudochecker.PseudoParameter
if p.Optional {
questionMark = b.f.NewToken(ast.KindQuestionToken)
}
return b.f.NewParameterDeclaration(
parameter := b.f.NewParameterDeclaration(
nil,
dotDotDot,
// matches strada behavior of always reserializing param names from scratch
b.parameterToParameterDeclarationName(p.Name.Parent.Symbol(), p.Name.Parent),
b.parameterToParameterDeclarationName(p.Declaration.Symbol, p.Declaration.AsNode()),
questionMark,
b.pseudoTypeToNode(p.Type),
nil,
)
b.setCommentRange(parameter, p.Declaration.AsNode())
return parameter
}

// see `typeNodeIsEquivalentToType` in strada, but applied more broadly here, so is setup to handle more equivalences - strada only used it via
Expand Down
8 changes: 5 additions & 3 deletions internal/pseudochecker/lookup.go
Original file line number Diff line number Diff line change
Expand Up @@ -659,11 +659,13 @@ func (ch *PseudoChecker) cloneParameters(nodes *ast.NodeList) []*PseudoParameter
}
result := make([]*PseudoParameter, 0, len(nodes.Nodes))
for _, e := range nodes.Nodes {
parameter := e.AsParameterDeclaration()
result = append(result, NewPseudoParameter(
e.AsParameterDeclaration().DotDotDotToken != nil,
parameter,
parameter.DotDotDotToken != nil,
e.Name(),
e.AsParameterDeclaration().QuestionToken != nil || e.AsParameterDeclaration().Initializer != nil,
ch.typeFromParameter(e.AsParameterDeclaration()),
parameter.QuestionToken != nil || parameter.Initializer != nil,
Comment on lines +665 to +667
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At some level, why even have any of these if we are ferrying along the declaration?

(Or, why not just use p.Name.Parent more above?)

ch.typeFromParameter(parameter),
))
}
return result
Expand Down
13 changes: 7 additions & 6 deletions internal/pseudochecker/type.go
Original file line number Diff line number Diff line change
Expand Up @@ -159,14 +159,15 @@ func (t *PseudoType) AsPseudoTypeUnion() *PseudoTypeUnion {
}

type PseudoParameter struct {
Rest bool
Name *ast.Node
Optional bool
Type *PseudoType
Declaration *ast.ParameterDeclaration
Rest bool
Name *ast.Node
Optional bool
Type *PseudoType
}

func NewPseudoParameter(isRest bool, name *ast.Node, isOptional bool, t *PseudoType) *PseudoParameter {
return &PseudoParameter{Rest: isRest, Name: name, Optional: isOptional, Type: t}
func NewPseudoParameter(declaration *ast.ParameterDeclaration, isRest bool, name *ast.Node, isOptional bool, t *PseudoType) *PseudoParameter {
return &PseudoParameter{Declaration: declaration, Rest: isRest, Name: name, Optional: isOptional, Type: t}
}

// PseudoTypeSingleCallSignature represents an object type with a single call signature, like an arrow or function expression
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,9 @@ b: number): void;
/** fooFunc
* comment
*/
declare var fooFunc: (b: string) => string;
declare var lambdaFoo: (a: number, b: number) => number;
declare var lambddaNoVarComment: (a: number, b: number) => number;
declare var fooFunc: (/** fooFunctionValue param */ b: string) => string;
declare var lambdaFoo: (/**param a*/ a: number, /**param b*/ b: number) => number;
declare var lambddaNoVarComment: (/**param a*/ a: number, /**param b*/ b: number) => number;
declare function blah(a: string): void;
declare function blah2(a: string): void;
declare function blah3(a: string): void;
Expand Down

This file was deleted.

Loading