Skip to content

Commit a702ed6

Browse files
committed
Fill in TODO
1 parent 7377cdb commit a702ed6

File tree

2 files changed

+42
-5
lines changed

2 files changed

+42
-5
lines changed

internal/checker/nodebuilderimpl.go

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1486,8 +1486,48 @@ func (b *nodeBuilderImpl) parameterToParameterDeclarationName(parameterSymbol *a
14861486
if parameterDeclaration == nil || parameterDeclaration.Name() == nil {
14871487
return b.f.NewIdentifier(parameterSymbol.Name)
14881488
}
1489-
// !!! TODO - symbol tracking of computed names in cloned binding patterns, set singleline emit flags
1490-
return b.f.DeepCloneNode(parameterDeclaration.Name())
1489+
1490+
return b.cloneBindingName(parameterDeclaration.Name())
1491+
}
1492+
1493+
func (b *nodeBuilderImpl) cloneBindingName(node *ast.Node) *ast.Node {
1494+
return b.elideInitializerAndSetEmitFlags(node)
1495+
}
1496+
1497+
func (b *nodeBuilderImpl) elideInitializerAndSetEmitFlags(node *ast.Node) *ast.Node {
1498+
if b.ctx.tracker != nil && ast.IsComputedPropertyName(node) && b.ch.isLateBindableName(node) {
1499+
b.trackComputedName(node.Expression(), b.ctx.enclosingDeclaration)
1500+
}
1501+
1502+
visited := b.visitEachChildWorker(node, b.elideInitializerAndSetEmitFlags)
1503+
1504+
if ast.IsBindingElement(visited) {
1505+
bindingElement := visited.AsBindingElement()
1506+
visited = b.f.UpdateBindingElement(
1507+
bindingElement,
1508+
bindingElement.DotDotDotToken,
1509+
bindingElement.PropertyName,
1510+
bindingElement.Name(),
1511+
nil, // remove initializer
1512+
)
1513+
}
1514+
1515+
if !ast.NodeIsSynthesized(visited) {
1516+
visited = b.f.DeepCloneNode(visited)
1517+
}
1518+
1519+
b.e.SetEmitFlags(visited, printer.EFSingleLine|printer.EFNoAsciiEscaping)
1520+
return visited
1521+
}
1522+
1523+
func (b *nodeBuilderImpl) visitEachChildWorker(node *ast.Node, cbNode func(*ast.Node) *ast.Node) *ast.Node {
1524+
if node == nil {
1525+
return nil
1526+
}
1527+
1528+
// Create a visitor that applies the callback to each child
1529+
visitor := ast.NewNodeVisitor(cbNode, b.f, ast.NodeVisitorHooks{})
1530+
return visitor.VisitEachChild(node)
14911531
}
14921532

14931533
func (b *nodeBuilderImpl) symbolTableToDeclarationStatements(symbolTable *ast.SymbolTable) []*ast.Node {

internal/scanner/scanner.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2090,9 +2090,6 @@ func SkipTriviaEx(text string, pos int, options *SkipTriviaOptions) int {
20902090
canConsumeStar := false
20912091
// Keep in sync with couldStartTrivia
20922092
for {
2093-
if pos >= textLen {
2094-
return pos
2095-
}
20962093
ch, size := utf8.DecodeRuneInString(text[pos:])
20972094
switch ch {
20982095
case '\r':

0 commit comments

Comments
 (0)