From aa639d3ce7c968e66162f9f1cf478f080987e750 Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Tue, 20 Oct 2015 14:47:25 -0700 Subject: [PATCH] Fixed bug in discoverKind. --- scripts/processTypes/discovery.ts | 22 +-- src/compiler/factory.generated.ts | 214 +++++++++++++++--------------- 2 files changed, 118 insertions(+), 118 deletions(-) diff --git a/scripts/processTypes/discovery.ts b/scripts/processTypes/discovery.ts index d78a233d685..0c43962ef78 100644 --- a/scripts/processTypes/discovery.ts +++ b/scripts/processTypes/discovery.ts @@ -129,26 +129,26 @@ export function discover(): DiscoveryResult { let propertyName = property.name; let parameterName = property.name === "arguments" ? "_arguments" : property.name; let parameterType: TypeInfo; - let nodeType: TypeInfo; + let elementType: TypeInfo; if (isModifiersArray) { - nodeType = modifierType; - parameterType = makeArrayType(nodeType); + elementType = modifierType; + parameterType = makeArrayType(elementType); } else if (isNodeArray) { - nodeType = property.propertyType.getGenericTypeArguments()[0]; - parameterType = makeArrayType(nodeType); + elementType = property.propertyType.getGenericTypeArguments()[0]; + parameterType = makeArrayType(elementType); } else if (isNode) { - nodeType = property.propertyType; - parameterType = nodeType; + elementType = property.propertyType; + parameterType = elementType; } else { parameterType = property.propertyType; } - if (nodeType) { - typesReferencedByProperties[nodeType.id] = true; - discoverType(nodeType); + if (elementType) { + typesReferencedByProperties[elementType.id] = true; + discoverType(elementType); } let parameterTypeName = parameterType.toString(); @@ -175,7 +175,7 @@ export function discover(): DiscoveryResult { testFunctionName = "isModifier"; } else if (isNodeArray || isNode) { - testFunctionName = getIsAnyNodeFunctionName(nodeType); + testFunctionName = getIsAnyNodeFunctionName(elementType); } break; } diff --git a/src/compiler/factory.generated.ts b/src/compiler/factory.generated.ts index 893fcfee0eb..d9439189542 100644 --- a/src/compiler/factory.generated.ts +++ b/src/compiler/factory.generated.ts @@ -3165,49 +3165,49 @@ namespace ts { if (node) { switch (node.kind) { case SyntaxKind.QualifiedName: - return updateQualifiedName(node, (node).left, (node).right); + return updateQualifiedName(node, transformer.visitNode((node).left, visitor, isEntityName), transformer.visitNode((node).right, visitor, isIdentifier)); case SyntaxKind.ComputedPropertyName: - return updateComputedPropertyName(node, (node).expression); + return updateComputedPropertyName(node, transformer.visitNode((node).expression, visitor, isExpressionNode)); case SyntaxKind.TypeParameter: - return updateTypeParameter(node, (node).name, (node).constraint, (node).expression); + return updateTypeParameter(node, transformer.visitNode((node).name, visitor, isIdentifier), transformer.visitNode((node).constraint, visitor, isTypeNodeNode), transformer.visitNode((node).expression, visitor, isExpressionNode)); case SyntaxKind.Parameter: - return updateParameter(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), (node).name, (node).questionToken, (node).type, (node).initializer); + return updateParameter(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNode((node).name, visitor, isBindingPatternOrIdentifier), (node).questionToken, transformer.visitNode((node).type, visitor, isTypeNodeNode), transformer.visitNode((node).initializer, visitor, isExpressionNode)); case SyntaxKind.Decorator: - return updateDecorator(node, (node).expression); + return updateDecorator(node, transformer.visitNode((node).expression, visitor, isLeftHandSideExpression)); case SyntaxKind.PropertySignature: - return updatePropertySignature(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), (node).name, (node).type); + return updatePropertySignature(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNode((node).name, visitor, isPropertyName), transformer.visitNode((node).type, visitor, isTypeNodeNode)); case SyntaxKind.PropertyDeclaration: - return updatePropertyDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), (node).name, (node).type, (node).initializer); + return updatePropertyDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNode((node).name, visitor, isPropertyName), transformer.visitNode((node).type, visitor, isTypeNodeNode), transformer.visitNode((node).initializer, visitor, isExpressionNode)); case SyntaxKind.MethodSignature: - return updateMethodSignature(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), (node).name, transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).parameters, visitor, isParameter), (node).type); + return updateMethodSignature(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNode((node).name, visitor, isPropertyName), transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).parameters, visitor, isParameter), transformer.visitNode((node).type, visitor, isTypeNodeNode)); case SyntaxKind.MethodDeclaration: - return updateMethodDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), (node).name, transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).parameters, visitor, isParameter), (node).type, (node).body); + return updateMethodDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNode((node).name, visitor, isPropertyName), transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).parameters, visitor, isParameter), transformer.visitNode((node).type, visitor, isTypeNodeNode), transformer.visitFunctionBody((node).body, visitor)); case SyntaxKind.Constructor: - return updateConstructor(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNodes((node).parameters, visitor, isParameter), (node).type, (node).body); + return updateConstructor(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNodes((node).parameters, visitor, isParameter), transformer.visitNode((node).type, visitor, isTypeNodeNode), transformer.visitFunctionBody((node).body, visitor)); case SyntaxKind.GetAccessor: - return updateGetAccessor(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), (node).name, transformer.visitNodes((node).parameters, visitor, isParameter), (node).type, (node).body); + return updateGetAccessor(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNode((node).name, visitor, isPropertyName), transformer.visitNodes((node).parameters, visitor, isParameter), transformer.visitNode((node).type, visitor, isTypeNodeNode), transformer.visitFunctionBody((node).body, visitor)); case SyntaxKind.SetAccessor: - return updateSetAccessor(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), (node).name, transformer.visitNodes((node).parameters, visitor, isParameter), (node).type, (node).body); + return updateSetAccessor(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNode((node).name, visitor, isPropertyName), transformer.visitNodes((node).parameters, visitor, isParameter), transformer.visitNode((node).type, visitor, isTypeNodeNode), transformer.visitFunctionBody((node).body, visitor)); case SyntaxKind.CallSignature: - return updateCallSignature(node, transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).parameters, visitor, isParameter), (node).type); + return updateCallSignature(node, transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).parameters, visitor, isParameter), transformer.visitNode((node).type, visitor, isTypeNodeNode)); case SyntaxKind.ConstructSignature: - return updateConstructSignature(node, transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).parameters, visitor, isParameter), (node).type); + return updateConstructSignature(node, transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).parameters, visitor, isParameter), transformer.visitNode((node).type, visitor, isTypeNodeNode)); case SyntaxKind.IndexSignature: - return updateIndexSignature(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNodes((node).parameters, visitor, isParameter), (node).type); + return updateIndexSignature(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNodes((node).parameters, visitor, isParameter), transformer.visitNode((node).type, visitor, isTypeNodeNode)); case SyntaxKind.TypePredicate: - return updateTypePredicate(node, (node).parameterName, (node).type); + return updateTypePredicate(node, transformer.visitNode((node).parameterName, visitor, isIdentifier), transformer.visitNode((node).type, visitor, isTypeNodeNode)); case SyntaxKind.TypeReference: - return updateTypeReference(node, (node).typeName, transformer.visitNodes((node).typeArguments, visitor, isTypeNodeNode)); + return updateTypeReference(node, transformer.visitNode((node).typeName, visitor, isEntityName), transformer.visitNodes((node).typeArguments, visitor, isTypeNodeNode)); case SyntaxKind.FunctionType: - return updateFunctionType(node, transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).parameters, visitor, isParameter), (node).type); + return updateFunctionType(node, transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).parameters, visitor, isParameter), transformer.visitNode((node).type, visitor, isTypeNodeNode)); case SyntaxKind.ConstructorType: - return updateConstructorType(node, transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).parameters, visitor, isParameter), (node).type); + return updateConstructorType(node, transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).parameters, visitor, isParameter), transformer.visitNode((node).type, visitor, isTypeNodeNode)); case SyntaxKind.TypeQuery: - return updateTypeQuery(node, (node).exprName); + return updateTypeQuery(node, transformer.visitNode((node).exprName, visitor, isEntityName)); case SyntaxKind.TypeLiteral: return updateTypeLiteral(node, transformer.visitNodes((node).members, visitor, isTypeElement)); case SyntaxKind.ArrayType: - return updateArrayType(node, (node).elementType); + return updateArrayType(node, transformer.visitNode((node).elementType, visitor, isTypeNodeNode)); case SyntaxKind.TupleType: return updateTupleType(node, transformer.visitNodes((node).elementTypes, visitor, isTypeNodeNode)); case SyntaxKind.UnionType: @@ -3215,213 +3215,213 @@ namespace ts { case SyntaxKind.IntersectionType: return updateIntersectionType(node, transformer.visitNodes((node).types, visitor, isTypeNodeNode)); case SyntaxKind.ParenthesizedType: - return updateParenthesizedType(node, (node).type); + return updateParenthesizedType(node, transformer.visitNode((node).type, visitor, isTypeNodeNode)); case SyntaxKind.ObjectBindingPattern: return updateObjectBindingPattern(node, transformer.visitNodes((node).elements, visitor, isBindingElement)); case SyntaxKind.ArrayBindingPattern: return updateArrayBindingPattern(node, transformer.visitNodes((node).elements, visitor, isBindingElement)); case SyntaxKind.BindingElement: - return updateBindingElement(node, (node).propertyName, (node).name, (node).initializer); + return updateBindingElement(node, transformer.visitNode((node).propertyName, visitor, isIdentifier), transformer.visitNode((node).name, visitor, isBindingPatternOrIdentifier), transformer.visitNode((node).initializer, visitor, isExpressionNode)); case SyntaxKind.ArrayLiteralExpression: return updateArrayLiteralExpression(node, transformer.visitNodes((node).elements, visitor, isExpressionNode)); case SyntaxKind.ObjectLiteralExpression: return updateObjectLiteralExpression(node, transformer.visitNodes((node).properties, visitor, isObjectLiteralElement)); case SyntaxKind.PropertyAccessExpression: - return updatePropertyAccessExpression(node, (node).expression, (node).name); + return updatePropertyAccessExpression(node, transformer.visitNode((node).expression, visitor, isLeftHandSideExpression), transformer.visitNode((node).name, visitor, isIdentifier)); case SyntaxKind.ElementAccessExpression: - return updateElementAccessExpression(node, (node).expression, (node).argumentExpression); + return updateElementAccessExpression(node, transformer.visitNode((node).expression, visitor, isLeftHandSideExpression), transformer.visitNode((node).argumentExpression, visitor, isExpressionNode)); case SyntaxKind.CallExpression: - return updateCallExpression(node, (node).expression, transformer.visitNodes((node).typeArguments, visitor, isTypeNodeNode), transformer.visitNodes((node).arguments, visitor, isExpressionNode)); + return updateCallExpression(node, transformer.visitNode((node).expression, visitor, isLeftHandSideExpression), transformer.visitNodes((node).typeArguments, visitor, isTypeNodeNode), transformer.visitNodes((node).arguments, visitor, isExpressionNode)); case SyntaxKind.NewExpression: - return updateNewExpression(node, (node).expression, transformer.visitNodes((node).typeArguments, visitor, isTypeNodeNode), transformer.visitNodes((node).arguments, visitor, isExpressionNode)); + return updateNewExpression(node, transformer.visitNode((node).expression, visitor, isLeftHandSideExpression), transformer.visitNodes((node).typeArguments, visitor, isTypeNodeNode), transformer.visitNodes((node).arguments, visitor, isExpressionNode)); case SyntaxKind.TaggedTemplateExpression: - return updateTaggedTemplateExpression(node, (node).tag, (node).template); + return updateTaggedTemplateExpression(node, transformer.visitNode((node).tag, visitor, isLeftHandSideExpression), transformer.visitNode((node).template, visitor, isLiteralExpressionOrTemplateExpression)); case SyntaxKind.TypeAssertionExpression: - return updateTypeAssertionExpression(node, (node).type, (node).expression); + return updateTypeAssertionExpression(node, transformer.visitNode((node).type, visitor, isTypeNodeNode), transformer.visitNode((node).expression, visitor, isUnaryExpression)); case SyntaxKind.ParenthesizedExpression: - return updateParenthesizedExpression(node, (node).expression); + return updateParenthesizedExpression(node, transformer.visitNode((node).expression, visitor, isExpressionNode)); case SyntaxKind.FunctionExpression: - return updateFunctionExpression(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), (node).name, transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).parameters, visitor, isParameter), (node).type, (node).body); + return updateFunctionExpression(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNode((node).name, visitor, isIdentifier), transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).parameters, visitor, isParameter), transformer.visitNode((node).type, visitor, isTypeNodeNode), transformer.visitFunctionBody((node).body, visitor)); case SyntaxKind.ArrowFunction: - return updateArrowFunction(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).parameters, visitor, isParameter), (node).type, (node).body); + return updateArrowFunction(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).parameters, visitor, isParameter), transformer.visitNode((node).type, visitor, isTypeNodeNode), transformer.visitConciseBody((node).body, visitor)); case SyntaxKind.DeleteExpression: - return updateDeleteExpression(node, (node).expression); + return updateDeleteExpression(node, transformer.visitNode((node).expression, visitor, isUnaryExpression)); case SyntaxKind.TypeOfExpression: - return updateTypeOfExpression(node, (node).expression); + return updateTypeOfExpression(node, transformer.visitNode((node).expression, visitor, isUnaryExpression)); case SyntaxKind.VoidExpression: - return updateVoidExpression(node, (node).expression); + return updateVoidExpression(node, transformer.visitNode((node).expression, visitor, isUnaryExpression)); case SyntaxKind.AwaitExpression: - return updateAwaitExpression(node, (node).expression); + return updateAwaitExpression(node, transformer.visitNode((node).expression, visitor, isUnaryExpression)); case SyntaxKind.PrefixUnaryExpression: - return updatePrefixUnaryExpression(node, (node).operand); + return updatePrefixUnaryExpression(node, transformer.visitNode((node).operand, visitor, isUnaryExpression)); case SyntaxKind.PostfixUnaryExpression: - return updatePostfixUnaryExpression(node, (node).operand); + return updatePostfixUnaryExpression(node, transformer.visitNode((node).operand, visitor, isLeftHandSideExpression)); case SyntaxKind.BinaryExpression: - return updateBinaryExpression(node, (node).left, (node).right); + return updateBinaryExpression(node, transformer.visitNode((node).left, visitor, isExpressionNode), transformer.visitNode((node).right, visitor, isExpressionNode)); case SyntaxKind.ConditionalExpression: - return updateConditionalExpression(node, (node).condition, (node).whenTrue, (node).whenFalse); + return updateConditionalExpression(node, transformer.visitNode((node).condition, visitor, isExpressionNode), transformer.visitNode((node).whenTrue, visitor, isExpressionNode), transformer.visitNode((node).whenFalse, visitor, isExpressionNode)); case SyntaxKind.TemplateExpression: - return updateTemplateExpression(node, (node).head, transformer.visitNodes((node).templateSpans, visitor, isTemplateSpan)); + return updateTemplateExpression(node, transformer.visitNode((node).head, visitor, isLiteralExpression), transformer.visitNodes((node).templateSpans, visitor, isTemplateSpan)); case SyntaxKind.YieldExpression: - return updateYieldExpression(node, (node).expression); + return updateYieldExpression(node, transformer.visitNode((node).expression, visitor, isExpressionNode)); case SyntaxKind.SpreadElementExpression: - return updateSpreadElementExpression(node, (node).expression); + return updateSpreadElementExpression(node, transformer.visitNode((node).expression, visitor, isExpressionNode)); case SyntaxKind.ClassExpression: - return updateClassExpression(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), (node).name, transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).heritageClauses, visitor, isHeritageClause), transformer.visitNodes((node).members, visitor, isClassElement)); + return updateClassExpression(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNode((node).name, visitor, isIdentifier), transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).heritageClauses, visitor, isHeritageClause), transformer.visitNodes((node).members, visitor, isClassElement)); case SyntaxKind.ExpressionWithTypeArguments: - return updateExpressionWithTypeArguments(node, (node).expression, transformer.visitNodes((node).typeArguments, visitor, isTypeNodeNode)); + return updateExpressionWithTypeArguments(node, transformer.visitNode((node).expression, visitor, isLeftHandSideExpression), transformer.visitNodes((node).typeArguments, visitor, isTypeNodeNode)); case SyntaxKind.AsExpression: - return updateAsExpression(node, (node).expression, (node).type); + return updateAsExpression(node, transformer.visitNode((node).expression, visitor, isExpressionNode), transformer.visitNode((node).type, visitor, isTypeNodeNode)); case SyntaxKind.TemplateSpan: - return updateTemplateSpan(node, (node).expression, (node).literal); + return updateTemplateSpan(node, transformer.visitNode((node).expression, visitor, isExpressionNode), transformer.visitNode((node).literal, visitor, isLiteralExpression)); case SyntaxKind.Block: return updateBlock(node, transformer.visitNodes((node).statements, visitor, isStatementNode)); case SyntaxKind.VariableStatement: - return updateVariableStatement(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), (node).declarationList); + return updateVariableStatement(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNode((node).declarationList, visitor, isVariableDeclarationList)); case SyntaxKind.ExpressionStatement: - return updateExpressionStatement(node, (node).expression); + return updateExpressionStatement(node, transformer.visitNode((node).expression, visitor, isExpressionNode)); case SyntaxKind.IfStatement: - return updateIfStatement(node, (node).expression, (node).thenStatement, (node).elseStatement); + return updateIfStatement(node, transformer.visitNode((node).expression, visitor, isExpressionNode), transformer.visitStatement((node).thenStatement, visitor), transformer.visitStatement((node).elseStatement, visitor)); case SyntaxKind.DoStatement: - return updateDoStatement(node, (node).statement, (node).expression); + return updateDoStatement(node, transformer.visitStatement((node).statement, visitor), transformer.visitNode((node).expression, visitor, isExpressionNode)); case SyntaxKind.WhileStatement: - return updateWhileStatement(node, (node).expression, (node).statement); + return updateWhileStatement(node, transformer.visitNode((node).expression, visitor, isExpressionNode), transformer.visitStatement((node).statement, visitor)); case SyntaxKind.ForStatement: - return updateForStatement(node, (node).initializer, (node).condition, (node).incrementor, (node).statement); + return updateForStatement(node, transformer.visitNode((node).initializer, visitor, isExpressionOrVariableDeclarationList), transformer.visitNode((node).condition, visitor, isExpressionNode), transformer.visitNode((node).incrementor, visitor, isExpressionNode), transformer.visitStatement((node).statement, visitor)); case SyntaxKind.ForInStatement: - return updateForInStatement(node, (node).initializer, (node).expression, (node).statement); + return updateForInStatement(node, transformer.visitNode((node).initializer, visitor, isExpressionOrVariableDeclarationList), transformer.visitNode((node).expression, visitor, isExpressionNode), transformer.visitStatement((node).statement, visitor)); case SyntaxKind.ForOfStatement: - return updateForOfStatement(node, (node).initializer, (node).expression, (node).statement); + return updateForOfStatement(node, transformer.visitNode((node).initializer, visitor, isExpressionOrVariableDeclarationList), transformer.visitNode((node).expression, visitor, isExpressionNode), transformer.visitStatement((node).statement, visitor)); case SyntaxKind.ContinueStatement: - return updateContinueStatement(node, (node).label); + return updateContinueStatement(node, transformer.visitNode((node).label, visitor, isIdentifier)); case SyntaxKind.BreakStatement: - return updateBreakStatement(node, (node).label); + return updateBreakStatement(node, transformer.visitNode((node).label, visitor, isIdentifier)); case SyntaxKind.ReturnStatement: - return updateReturnStatement(node, (node).expression); + return updateReturnStatement(node, transformer.visitNode((node).expression, visitor, isExpressionNode)); case SyntaxKind.WithStatement: - return updateWithStatement(node, (node).expression, (node).statement); + return updateWithStatement(node, transformer.visitNode((node).expression, visitor, isExpressionNode), transformer.visitStatement((node).statement, visitor)); case SyntaxKind.SwitchStatement: - return updateSwitchStatement(node, (node).expression, (node).caseBlock); + return updateSwitchStatement(node, transformer.visitNode((node).expression, visitor, isExpressionNode), transformer.visitNode((node).caseBlock, visitor, isCaseBlock)); case SyntaxKind.LabeledStatement: - return updateLabeledStatement(node, (node).label, (node).statement); + return updateLabeledStatement(node, transformer.visitNode((node).label, visitor, isIdentifier), transformer.visitStatement((node).statement, visitor)); case SyntaxKind.ThrowStatement: - return updateThrowStatement(node, (node).expression); + return updateThrowStatement(node, transformer.visitNode((node).expression, visitor, isExpressionNode)); case SyntaxKind.TryStatement: - return updateTryStatement(node, (node).tryBlock, (node).catchClause, (node).finallyBlock); + return updateTryStatement(node, transformer.visitNode((node).tryBlock, visitor, isBlock), transformer.visitNode((node).catchClause, visitor, isCatchClause), transformer.visitNode((node).finallyBlock, visitor, isBlock)); case SyntaxKind.VariableDeclaration: - return updateVariableDeclaration(node, (node).name, (node).type, (node).initializer); + return updateVariableDeclaration(node, transformer.visitNode((node).name, visitor, isBindingPatternOrIdentifier), transformer.visitNode((node).type, visitor, isTypeNodeNode), transformer.visitNode((node).initializer, visitor, isExpressionNode)); case SyntaxKind.VariableDeclarationList: return updateVariableDeclarationList(node, transformer.visitNodes((node).declarations, visitor, isVariableDeclaration)); case SyntaxKind.FunctionDeclaration: - return updateFunctionDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), (node).name, transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).parameters, visitor, isParameter), (node).type, (node).body); + return updateFunctionDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNode((node).name, visitor, isIdentifier), transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).parameters, visitor, isParameter), transformer.visitNode((node).type, visitor, isTypeNodeNode), transformer.visitFunctionBody((node).body, visitor)); case SyntaxKind.ClassDeclaration: - return updateClassDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), (node).name, transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).heritageClauses, visitor, isHeritageClause), transformer.visitNodes((node).members, visitor, isClassElement)); + return updateClassDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNode((node).name, visitor, isIdentifier), transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).heritageClauses, visitor, isHeritageClause), transformer.visitNodes((node).members, visitor, isClassElement)); case SyntaxKind.InterfaceDeclaration: - return updateInterfaceDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), (node).name, transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).heritageClauses, visitor, isHeritageClause), transformer.visitNodes((node).members, visitor, isTypeElement)); + return updateInterfaceDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNode((node).name, visitor, isIdentifier), transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNodes((node).heritageClauses, visitor, isHeritageClause), transformer.visitNodes((node).members, visitor, isTypeElement)); case SyntaxKind.TypeAliasDeclaration: - return updateTypeAliasDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), (node).name, transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), (node).type); + return updateTypeAliasDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNode((node).name, visitor, isIdentifier), transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNode((node).type, visitor, isTypeNodeNode)); case SyntaxKind.EnumDeclaration: - return updateEnumDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), (node).name, transformer.visitNodes((node).members, visitor, isEnumMember)); + return updateEnumDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNode((node).name, visitor, isIdentifier), transformer.visitNodes((node).members, visitor, isEnumMember)); case SyntaxKind.ModuleDeclaration: - return updateModuleDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), (node).name, (node).body); + return updateModuleDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNode((node).name, visitor, isIdentifierOrLiteralExpression), transformer.visitModuleBody((node).body, visitor)); case SyntaxKind.ModuleBlock: return updateModuleBlock(node, transformer.visitNodes((node).statements, visitor, isStatementNode)); case SyntaxKind.CaseBlock: return updateCaseBlock(node, transformer.visitNodes((node).clauses, visitor, isCaseOrDefaultClause)); case SyntaxKind.ImportEqualsDeclaration: - return updateImportEqualsDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), (node).name, (node).moduleReference); + return updateImportEqualsDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNode((node).name, visitor, isIdentifier), transformer.visitNode((node).moduleReference, visitor, isEntityNameOrExternalModuleReference)); case SyntaxKind.ImportDeclaration: - return updateImportDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), (node).importClause, (node).moduleSpecifier); + return updateImportDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNode((node).importClause, visitor, isImportClause), transformer.visitNode((node).moduleSpecifier, visitor, isExpressionNode)); case SyntaxKind.ImportClause: - return updateImportClause(node, (node).name, (node).namedBindings); + return updateImportClause(node, transformer.visitNode((node).name, visitor, isIdentifier), transformer.visitNode((node).namedBindings, visitor, isNamedImportsOrNamespaceImport)); case SyntaxKind.NamespaceImport: - return updateNamespaceImport(node, (node).name); + return updateNamespaceImport(node, transformer.visitNode((node).name, visitor, isIdentifier)); case SyntaxKind.NamedImports: return updateNamedImports(node, transformer.visitNodes((node).elements, visitor, isImportSpecifier)); case SyntaxKind.ImportSpecifier: - return updateImportSpecifier(node, (node).propertyName, (node).name); + return updateImportSpecifier(node, transformer.visitNode((node).propertyName, visitor, isIdentifier), transformer.visitNode((node).name, visitor, isIdentifier)); case SyntaxKind.ExportAssignment: - return updateExportAssignment(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), (node).expression); + return updateExportAssignment(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNode((node).expression, visitor, isExpressionNode)); case SyntaxKind.ExportDeclaration: - return updateExportDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), (node).exportClause, (node).moduleSpecifier); + return updateExportDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier), transformer.visitNode((node).exportClause, visitor, isNamedExports), transformer.visitNode((node).moduleSpecifier, visitor, isExpressionNode)); case SyntaxKind.NamedExports: return updateNamedExports(node, transformer.visitNodes((node).elements, visitor, isExportSpecifier)); case SyntaxKind.ExportSpecifier: - return updateExportSpecifier(node, (node).propertyName, (node).name); + return updateExportSpecifier(node, transformer.visitNode((node).propertyName, visitor, isIdentifier), transformer.visitNode((node).name, visitor, isIdentifier)); case SyntaxKind.MissingDeclaration: return updateMissingDeclaration(node, transformer.visitNodes((node).decorators, visitor, isDecorator), transformer.visitNodes((node).modifiers, visitor, isModifier)); case SyntaxKind.ExternalModuleReference: - return updateExternalModuleReference(node, (node).expression); + return updateExternalModuleReference(node, transformer.visitNode((node).expression, visitor, isExpressionNode)); case SyntaxKind.JsxElement: - return updateJsxElement(node, (node).openingElement, transformer.visitNodes((node).children, visitor, isJsxChild), (node).closingElement); + return updateJsxElement(node, transformer.visitNode((node).openingElement, visitor, isJsxOpeningElement), transformer.visitNodes((node).children, visitor, isJsxChild), transformer.visitNode((node).closingElement, visitor, isJsxClosingElement)); case SyntaxKind.JsxSelfClosingElement: - return updateJsxSelfClosingElement(node, (node).tagName, transformer.visitNodes((node).attributes, visitor, isJsxAttributeOrJsxSpreadAttribute)); + return updateJsxSelfClosingElement(node, transformer.visitNode((node).tagName, visitor, isEntityName), transformer.visitNodes((node).attributes, visitor, isJsxAttributeOrJsxSpreadAttribute)); case SyntaxKind.JsxOpeningElement: - return updateJsxOpeningElement(node, (node).tagName, transformer.visitNodes((node).attributes, visitor, isJsxAttributeOrJsxSpreadAttribute)); + return updateJsxOpeningElement(node, transformer.visitNode((node).tagName, visitor, isEntityName), transformer.visitNodes((node).attributes, visitor, isJsxAttributeOrJsxSpreadAttribute)); case SyntaxKind.JsxClosingElement: - return updateJsxClosingElement(node, (node).tagName); + return updateJsxClosingElement(node, transformer.visitNode((node).tagName, visitor, isEntityName)); case SyntaxKind.JsxAttribute: - return updateJsxAttribute(node, (node).name, (node).initializer); + return updateJsxAttribute(node, transformer.visitNode((node).name, visitor, isIdentifier), transformer.visitNode((node).initializer, visitor, isExpressionNode)); case SyntaxKind.JsxSpreadAttribute: - return updateJsxSpreadAttribute(node, (node).expression); + return updateJsxSpreadAttribute(node, transformer.visitNode((node).expression, visitor, isExpressionNode)); case SyntaxKind.JsxExpression: - return updateJsxExpression(node, (node).expression); + return updateJsxExpression(node, transformer.visitNode((node).expression, visitor, isExpressionNode)); case SyntaxKind.CaseClause: - return updateCaseClause(node, (node).expression, transformer.visitNodes((node).statements, visitor, isStatementNode)); + return updateCaseClause(node, transformer.visitNode((node).expression, visitor, isExpressionNode), transformer.visitNodes((node).statements, visitor, isStatementNode)); case SyntaxKind.DefaultClause: return updateDefaultClause(node, transformer.visitNodes((node).statements, visitor, isStatementNode)); case SyntaxKind.HeritageClause: return updateHeritageClause(node, transformer.visitNodes((node).types, visitor, isExpressionWithTypeArguments)); case SyntaxKind.CatchClause: - return updateCatchClause(node, (node).variableDeclaration, (node).block); + return updateCatchClause(node, transformer.visitNode((node).variableDeclaration, visitor, isVariableDeclaration), transformer.visitNode((node).block, visitor, isBlock)); case SyntaxKind.PropertyAssignment: - return updatePropertyAssignment(node, (node).name, (node).initializer); + return updatePropertyAssignment(node, transformer.visitNode((node).name, visitor, isPropertyName), transformer.visitNode((node).initializer, visitor, isExpressionNode)); case SyntaxKind.ShorthandPropertyAssignment: - return updateShorthandPropertyAssignment(node, (node).name, (node).equalsToken, (node).objectAssignmentInitializer); + return updateShorthandPropertyAssignment(node, transformer.visitNode((node).name, visitor, isIdentifier), (node).equalsToken, transformer.visitNode((node).objectAssignmentInitializer, visitor, isExpressionNode)); case SyntaxKind.EnumMember: - return updateEnumMember(node, (node).name, (node).initializer); + return updateEnumMember(node, transformer.visitNode((node).name, visitor, isDeclarationNameNode), transformer.visitNode((node).initializer, visitor, isExpressionNode)); case SyntaxKind.SourceFile: return updateSourceFileNode(node, transformer.visitNodes((node).statements, visitor, isStatementNode), (node).endOfFileToken); case SyntaxKind.JSDocTypeExpression: - return updateJSDocTypeExpression(node, (node).type); + return updateJSDocTypeExpression(node, transformer.visitNode((node).type, visitor, isJSDocType)); case SyntaxKind.JSDocArrayType: - return updateJSDocArrayType(node, (node).elementType); + return updateJSDocArrayType(node, transformer.visitNode((node).elementType, visitor, isJSDocType)); case SyntaxKind.JSDocUnionType: return updateJSDocUnionType(node, transformer.visitNodes((node).types, visitor, isJSDocType)); case SyntaxKind.JSDocTupleType: return updateJSDocTupleType(node, transformer.visitNodes((node).types, visitor, isJSDocType)); case SyntaxKind.JSDocNullableType: - return updateJSDocNullableType(node, (node).type); + return updateJSDocNullableType(node, transformer.visitNode((node).type, visitor, isJSDocType)); case SyntaxKind.JSDocNonNullableType: - return updateJSDocNonNullableType(node, (node).type); + return updateJSDocNonNullableType(node, transformer.visitNode((node).type, visitor, isJSDocType)); case SyntaxKind.JSDocRecordType: return updateJSDocRecordType(node, transformer.visitNodes((node).members, visitor, isJSDocRecordMember)); case SyntaxKind.JSDocRecordMember: - return updateJSDocRecordMember(node, (node).name, (node).type); + return updateJSDocRecordMember(node, transformer.visitNode((node).name, visitor, isIdentifierOrLiteralExpression), transformer.visitNode((node).type, visitor, isJSDocType)); case SyntaxKind.JSDocTypeReference: - return updateJSDocTypeReference(node, (node).name, transformer.visitNodes((node).typeArguments, visitor, isJSDocType)); + return updateJSDocTypeReference(node, transformer.visitNode((node).name, visitor, isEntityName), transformer.visitNodes((node).typeArguments, visitor, isJSDocType)); case SyntaxKind.JSDocOptionalType: - return updateJSDocOptionalType(node, (node).type); + return updateJSDocOptionalType(node, transformer.visitNode((node).type, visitor, isJSDocType)); case SyntaxKind.JSDocFunctionType: - return updateJSDocFunctionType(node, transformer.visitNodes((node).parameters, visitor, isParameter), (node).type); + return updateJSDocFunctionType(node, transformer.visitNodes((node).parameters, visitor, isParameter), transformer.visitNode((node).type, visitor, isJSDocType)); case SyntaxKind.JSDocVariadicType: - return updateJSDocVariadicType(node, (node).type); + return updateJSDocVariadicType(node, transformer.visitNode((node).type, visitor, isJSDocType)); case SyntaxKind.JSDocConstructorType: - return updateJSDocConstructorType(node, (node).type); + return updateJSDocConstructorType(node, transformer.visitNode((node).type, visitor, isJSDocType)); case SyntaxKind.JSDocThisType: - return updateJSDocThisType(node, (node).type); + return updateJSDocThisType(node, transformer.visitNode((node).type, visitor, isJSDocType)); case SyntaxKind.JSDocComment: return updateJSDocComment(node, transformer.visitNodes((node).tags, visitor, isJSDocTag)); case SyntaxKind.JSDocTag: - return updateJSDocTag(node, (node).tagName); + return updateJSDocTag(node, transformer.visitNode((node).tagName, visitor, isIdentifier)); case SyntaxKind.JSDocParameterTag: - return updateJSDocParameterTag(node, (node).preParameterName, (node).typeExpression, (node).postParameterName, (node).tagName); + return updateJSDocParameterTag(node, transformer.visitNode((node).preParameterName, visitor, isIdentifier), transformer.visitNode((node).typeExpression, visitor, isJSDocTypeExpression), transformer.visitNode((node).postParameterName, visitor, isIdentifier), transformer.visitNode((node).tagName, visitor, isIdentifier)); case SyntaxKind.JSDocReturnTag: - return updateJSDocReturnTag(node, (node).typeExpression, (node).tagName); + return updateJSDocReturnTag(node, transformer.visitNode((node).typeExpression, visitor, isJSDocTypeExpression), transformer.visitNode((node).tagName, visitor, isIdentifier)); case SyntaxKind.JSDocTypeTag: - return updateJSDocTypeTag(node, (node).typeExpression, (node).tagName); + return updateJSDocTypeTag(node, transformer.visitNode((node).typeExpression, visitor, isJSDocTypeExpression), transformer.visitNode((node).tagName, visitor, isIdentifier)); case SyntaxKind.JSDocTemplateTag: - return updateJSDocTemplateTag(node, transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), (node).tagName); + return updateJSDocTemplateTag(node, transformer.visitNodes((node).typeParameters, visitor, isTypeParameter), transformer.visitNode((node).tagName, visitor, isIdentifier)); } } return node;