Skip to content

Commit d5bb629

Browse files
authored
fix: scan tokens if pos < node.End() (#274)
1 parent d05a73c commit d5bb629

File tree

1 file changed

+26
-17
lines changed

1 file changed

+26
-17
lines changed

internal/utils/ts_api_utils.go

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -158,28 +158,37 @@ func GetWellKnownSymbolPropertyOfType(t *checker.Type, name string, typeChecker
158158
return checker.Checker_getPropertyOfType(typeChecker, t, checker.Checker_getPropertyNameForKnownSymbolName(typeChecker, name))
159159
}
160160

161+
// getChildrenFromNonJSDocNode from github.com/microsoft/typescript-go/internal/ls/utilities.go
161162
func GetChildren(node *ast.Node, sourceFile *ast.SourceFile) []*ast.Node {
162-
children := make([]*ast.Node, 0)
163-
164-
pos := node.Pos()
163+
var childNodes []*ast.Node
165164
node.ForEachChild(func(child *ast.Node) bool {
166-
childPos := child.Pos()
167-
if pos < childPos {
168-
scanner := scanner.GetScannerForSourceFile(sourceFile, pos)
169-
for pos < childPos {
170-
token := scanner.Token()
171-
tokenFullStart := scanner.TokenFullStart()
172-
tokenEnd := scanner.TokenEnd()
173-
children = append(children, sourceFile.GetOrCreateToken(token, tokenFullStart, tokenEnd, node))
174-
pos = tokenEnd
175-
scanner.Scan()
176-
}
165+
childNodes = append(childNodes, child)
166+
return false
167+
})
168+
var children []*ast.Node
169+
pos := node.Pos()
170+
for _, child := range childNodes {
171+
scanner := scanner.GetScannerForSourceFile(sourceFile, pos)
172+
for pos < child.Pos() {
173+
token := scanner.Token()
174+
tokenFullStart := scanner.TokenFullStart()
175+
tokenEnd := scanner.TokenEnd()
176+
children = append(children, sourceFile.GetOrCreateToken(token, tokenFullStart, tokenEnd, node))
177+
pos = tokenEnd
178+
scanner.Scan()
177179
}
178-
179180
children = append(children, child)
180181
pos = child.End()
181-
return false
182-
})
182+
}
183+
scanner := scanner.GetScannerForSourceFile(sourceFile, pos)
184+
for pos < node.End() {
185+
token := scanner.Token()
186+
tokenFullStart := scanner.TokenFullStart()
187+
tokenEnd := scanner.TokenEnd()
188+
children = append(children, sourceFile.GetOrCreateToken(token, tokenFullStart, tokenEnd, node))
189+
pos = tokenEnd
190+
scanner.Scan()
191+
}
183192
return children
184193
}
185194

0 commit comments

Comments
 (0)