Skip to content
Merged
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
55 changes: 22 additions & 33 deletions pkg/ast/ast.go
Original file line number Diff line number Diff line change
Expand Up @@ -617,6 +617,8 @@ func (n *Node) StatementList() *NodeList {
return n.AsBlock().Statements
case KindModuleBlock:
return n.AsModuleBlock().Statements
case KindCaseClause, KindDefaultClause:
return n.AsCaseOrDefaultClause().Statements
}
panic("Unhandled case in Node.StatementList: " + n.Kind.String())
}
Expand Down Expand Up @@ -1038,6 +1040,10 @@ func (n *Node) Statement() *Statement {
return n.AsForStatement().Statement
case KindForInStatement, KindForOfStatement:
return n.AsForInOrOfStatement().Statement
case KindWithStatement:
return n.AsWithStatement().Statement
case KindLabeledStatement:
return n.AsLabeledStatement().Statement
}
panic("Unhandled case in Node.Statement: " + n.Kind.String())
}
Expand Down Expand Up @@ -1068,8 +1074,11 @@ func (n *Node) ElementList() *NodeList {
return n.AsNamedExports().Elements
case KindObjectBindingPattern, KindArrayBindingPattern:
return n.AsBindingPattern().Elements
case KindArrayLiteralExpression:
return n.AsArrayLiteralExpression().Elements
case KindTupleType:
return n.AsTupleTypeNode().Elements
}

panic("Unhandled case in Node.ElementList: " + n.Kind.String())
}

Expand All @@ -1081,22 +1090,22 @@ func (n *Node) Elements() []*Node {
return nil
}

func (n *Node) postfixToken() *Node {
func (n *Node) PostfixToken() *Node {
switch n.Kind {
case KindEnumMember:
return n.AsEnumMember().PostfixToken
case KindPropertyAssignment:
return n.AsPropertyAssignment().PostfixToken
case KindMethodDeclaration:
return n.AsMethodDeclaration().PostfixToken
case KindShorthandPropertyAssignment:
return n.AsShorthandPropertyAssignment().PostfixToken
case KindMethodSignature:
return n.AsMethodSignatureDeclaration().PostfixToken
case KindPropertySignature:
return n.AsPropertySignatureDeclaration().PostfixToken
case KindPropertyAssignment:
return n.AsPropertyAssignment().PostfixToken
case KindPropertyDeclaration:
return n.AsPropertyDeclaration().PostfixToken
case KindMethodSignature:
return n.AsMethodSignatureDeclaration().PostfixToken
case KindMethodDeclaration:
return n.AsMethodDeclaration().PostfixToken
case KindEnumMember:
return n.AsEnumMember().PostfixToken
case KindGetAccessor:
return n.AsGetAccessorDeclaration().PostfixToken
case KindSetAccessor:
Expand All @@ -1116,7 +1125,7 @@ func (n *Node) QuestionToken() *TokenNode {
case KindNamedTupleMember:
return n.AsNamedTupleMember().QuestionToken
}
postfix := n.postfixToken()
postfix := n.PostfixToken()
if postfix != nil && postfix.Kind == KindQuestionToken {
return postfix
}
Expand Down Expand Up @@ -1163,26 +1172,6 @@ func (n *Node) ClassName() *Node {
panic("Unhandled case in Node.ClassName: " + n.Kind.String())
}

func (n *Node) PostfixToken() *Node {
switch n.Kind {
case KindParameter:
return n.AsParameterDeclaration().QuestionToken
case KindMethodDeclaration:
return n.AsMethodDeclaration().PostfixToken
case KindShorthandPropertyAssignment:
return n.AsShorthandPropertyAssignment().PostfixToken
case KindMethodSignature:
return n.AsMethodSignatureDeclaration().PostfixToken
case KindPropertySignature:
return n.AsPropertySignatureDeclaration().PostfixToken
case KindPropertyAssignment:
return n.AsPropertyAssignment().PostfixToken
case KindPropertyDeclaration:
return n.AsPropertyDeclaration().PostfixToken
}
return nil
}

// Determines if `n` contains `descendant` by walking up the `Parent` pointers from `descendant`. This method panics if
// `descendant` or one of its ancestors is not parented except when that node is a `SourceFile`.
func (n *Node) Contains(descendant *Node) bool {
Expand Down Expand Up @@ -11045,7 +11034,7 @@ func (node *SourceFile) computeDeclarationMap() map[string][]*Node {
exportClause := node.AsExportDeclaration().ExportClause
if exportClause != nil {
if IsNamedExports(exportClause) {
for _, element := range exportClause.AsNamedExports().Elements.Nodes {
for _, element := range exportClause.Elements() {
visit(element)
}
} else {
Expand All @@ -11068,7 +11057,7 @@ func (node *SourceFile) computeDeclarationMap() map[string][]*Node {
if namedBindings.Kind == KindNamespaceImport {
addDeclaration(namedBindings)
} else {
for _, element := range namedBindings.AsNamedImports().Elements.Nodes {
for _, element := range namedBindings.Elements() {
visit(element)
}
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/ast/precedence.go
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ func getOperator(expression *Expression) Kind {
func GetExpressionPrecedence(expression *Expression) OperatorPrecedence {
operator := getOperator(expression)
var flags OperatorPrecedenceFlags
if expression.Kind == KindNewExpression && expression.AsNewExpression().Arguments == nil {
if expression.Kind == KindNewExpression && expression.ArgumentList() == nil {
flags = OperatorPrecedenceFlagsNewWithoutArguments
} else if IsOptionalChain(expression) {
flags = OperatorPrecedenceFlagsOptionalChain
Expand Down
Loading