Skip to content

Commit 3d2b680

Browse files
authored
feat(2280): Port implement interface quick fix (#3499)
1 parent c282336 commit 3d2b680

278 files changed

Lines changed: 9778 additions & 492 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

internal/checker/checker.go

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19935,22 +19935,13 @@ func (c *Checker) getAnnotatedAccessorTypeNode(accessor *ast.Node) *ast.Node {
1993519935
}
1993619936

1993719937
func getEffectiveSetAccessorTypeAnnotationNode(node *ast.Node) *ast.Node {
19938-
param := getSetAccessorValueParameter(node)
19938+
param := GetSetAccessorValueParameter(node)
1993919939
if param != nil {
1994019940
return param.Type()
1994119941
}
1994219942
return nil
1994319943
}
1994419944

19945-
func getSetAccessorValueParameter(accessor *ast.Node) *ast.Node {
19946-
parameters := accessor.Parameters()
19947-
if len(parameters) > 0 {
19948-
hasThis := len(parameters) == 2 && ast.IsThisParameter(parameters[0])
19949-
return parameters[core.IfElse(hasThis, 1, 0)]
19950-
}
19951-
return nil
19952-
}
19953-
1995419945
func (c *Checker) getReturnTypeFromBody(fn *ast.Node, checkMode CheckMode) *Type {
1995519946
body := fn.Body()
1995619947
if body == nil {

internal/checker/exports.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,21 @@ func (c *Checker) GetUnionType(types []*Type) *Type {
6666
return c.getUnionType(types)
6767
}
6868

69+
func (c *Checker) GetNameTypeOfSymbol(symbol *ast.Symbol) *Type {
70+
if !c.valueSymbolLinks.Has(symbol) {
71+
return nil
72+
}
73+
return c.valueSymbolLinks.TryGet(symbol).nameType
74+
}
75+
76+
func IsTypeUsableAsPropertyName(t *Type) bool {
77+
return isTypeUsableAsPropertyName(t)
78+
}
79+
80+
func GetPropertyNameFromType(t *Type) string {
81+
return getPropertyNameFromType(t)
82+
}
83+
6984
func (c *Checker) GetGlobalSymbol(name string, meaning ast.SymbolFlags, diagnostic *diagnostics.Message) *ast.Symbol {
7085
return c.getGlobalSymbol(name, meaning, diagnostic)
7186
}
@@ -263,6 +278,10 @@ func (c *Checker) GetTypeArguments(t *Type) []*Type {
263278
return c.getTypeArguments(t)
264279
}
265280

281+
func (c *Checker) GetIndexInfoOfType(t *Type, keyType *Type) *IndexInfo {
282+
return c.getIndexInfoOfType(t, keyType)
283+
}
284+
266285
func (c *Checker) GetIndexInfosOfType(t *Type) []*IndexInfo {
267286
return c.getIndexInfosOfType(t)
268287
}

internal/checker/grammarchecks.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1348,7 +1348,7 @@ func (c *Checker) checkGrammarAccessor(accessor *ast.AccessorDeclaration) bool {
13481348
return c.grammarErrorOnNode(accessor.Name(), diagnostics.A_set_accessor_cannot_have_a_return_type_annotation)
13491349
}
13501350

1351-
parameterNode := getSetAccessorValueParameter(accessor)
1351+
parameterNode := GetSetAccessorValueParameter(accessor)
13521352
if parameterNode == nil {
13531353
panic("Return value does not match parameter count assertion.")
13541354
}

internal/checker/nodebuilderimpl.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2519,7 +2519,7 @@ func (b *NodeBuilderImpl) createTypeNodesFromResolvedType(resolvedType *Structur
25192519
if b.checkTruncationLength() {
25202520
if b.ctx.flags&nodebuilder.FlagsNoTruncation != 0 {
25212521
elem := b.f.NewNotEmittedTypeElement()
2522-
return b.f.NewNodeList([]*ast.TypeElement{b.e.AddSyntheticLeadingComment(elem, ast.KindMultiLineCommentTrivia, "elided", false /*hasTrailingNewLine*/)})
2522+
return b.f.NewNodeList([]*ast.TypeElement{b.e.AddSyntheticTrailingComment(elem, ast.KindMultiLineCommentTrivia, "elided", false /*hasTrailingNewLine*/)})
25232523
}
25242524
return b.f.NewNodeList([]*ast.Node{b.f.NewPropertySignatureDeclaration(nil, b.f.NewIdentifier("..."), nil, nil, nil)})
25252525
}
@@ -2561,7 +2561,7 @@ func (b *NodeBuilderImpl) createTypeNodesFromResolvedType(resolvedType *Structur
25612561
}
25622562
if b.checkTruncationLength() && (i+2 < len(properties)-1) {
25632563
if b.ctx.flags&nodebuilder.FlagsNoTruncation != 0 {
2564-
typeElements[len(typeElements)-1] = b.e.AddSyntheticLeadingComment(typeElements[len(typeElements)-1], ast.KindMultiLineCommentTrivia, fmt.Sprintf("... %d more elided ...", len(properties)-i), false /*hasTrailingNewLine*/)
2564+
typeElements[len(typeElements)-1] = b.e.AddSyntheticTrailingComment(typeElements[len(typeElements)-1], ast.KindMultiLineCommentTrivia, fmt.Sprintf("... %d more elided ...", len(properties)-i), false /*hasTrailingNewLine*/)
25652565
} else {
25662566
text := fmt.Sprintf("... %d more ...", len(properties)-i)
25672567
typeElements = append(typeElements, b.f.NewPropertySignatureDeclaration(nil, b.f.NewIdentifier(text), nil, nil, nil))

internal/checker/types.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1302,6 +1302,10 @@ func (s *Signature) HasRestParameter() bool {
13021302
return s.flags&SignatureFlagsHasRestParameter != 0
13031303
}
13041304

1305+
func (s *Signature) MinArgumentCount() int {
1306+
return int(s.minArgumentCount)
1307+
}
1308+
13051309
type CompositeSignature struct {
13061310
isUnion bool // True for union, false for intersection
13071311
signatures []*Signature // Individual signatures

internal/checker/utilities.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1818,3 +1818,12 @@ func walkUpOuterExpressions(node *ast.Node) *ast.Node {
18181818
}
18191819
return parent
18201820
}
1821+
1822+
func GetSetAccessorValueParameter(accessor *ast.Node) *ast.Node {
1823+
parameters := accessor.Parameters()
1824+
if len(parameters) > 0 {
1825+
hasThis := len(parameters) == 2 && ast.IsThisParameter(parameters[0])
1826+
return parameters[core.IfElse(hasThis, 1, 0)]
1827+
}
1828+
return nil
1829+
}

0 commit comments

Comments
 (0)