in tsc/src/lsif.ts [3523:3604]
protected visit(node: ts.Node): void {
switch (node.kind) {
case ts.SyntaxKind.SourceFile:
this.doVisit(this.visitSourceFile, this.endVisitSourceFile, node as ts.SourceFile);
break;
case ts.SyntaxKind.ModuleDeclaration:
this.doVisit(this.visitModuleDeclaration, this.endVisitModuleDeclaration, node as ts.ModuleDeclaration);
break;
case ts.SyntaxKind.ClassDeclaration:
this.doVisit(this.visitClassOrInterfaceDeclaration, this.endVisitClassOrInterfaceDeclaration, node as (ts.ClassDeclaration | ts.InterfaceDeclaration));
break;
case ts.SyntaxKind.InterfaceDeclaration:
this.doVisit(this.visitClassOrInterfaceDeclaration, this.endVisitClassOrInterfaceDeclaration, node as (ts.ClassDeclaration | ts.InterfaceDeclaration));
break;
case ts.SyntaxKind.TypeParameter:
this.doVisit(this.visitTypeParameter, this.endVisitTypeParameter, node as ts.TypeParameterDeclaration);
break;
case ts.SyntaxKind.Constructor:
this.doVisit(this.visitConstructor, this.endVisitConstructor, node as ts.ConstructorDeclaration);
break;
case ts.SyntaxKind.MethodDeclaration:
this.doVisit(this.visitMethodDeclaration, this.endVisitMethodDeclaration, node as ts.MethodDeclaration);
break;
case ts.SyntaxKind.MethodSignature:
this.doVisit(this.visitMethodSignature, this.endVisitMethodSignature, node as ts.MethodSignature);
break;
case ts.SyntaxKind.FunctionDeclaration:
this.doVisit(this.visitFunctionDeclaration, this.endVisitFunctionDeclaration, node as ts.FunctionDeclaration);
break;
case ts.SyntaxKind.PropertyDeclaration:
this.doVisit(this.visitPropertyDeclaration, this.endVisitPropertyDeclaration, node as ts.PropertyDeclaration);
break;
case ts.SyntaxKind.PropertySignature:
this.doVisit(this.visitPropertySignature, this.endVisitPropertySignature, node as ts.PropertySignature);
break;
case ts.SyntaxKind.Parameter:
this.doVisit(this.visitParameterDeclaration, this.endVisitParameterDeclaration, node as ts.ParameterDeclaration);
break;
case ts.SyntaxKind.ClassExpression:
this.doVisit(this.visitClassExpression, this.endVisitClassExpression, node as ts.ClassExpression);
break;
case ts.SyntaxKind.ExportAssignment:
this.doVisit(this.visitExportAssignment, this.endVisitExportAssignment, node as ts.ExportAssignment);
break;
case ts.SyntaxKind.ExportDeclaration:
this.doVisit(this.visitExportDeclaration, this.endVisitExportDeclaration, node as ts.ExportDeclaration);
break;
case ts.SyntaxKind.ExpressionStatement:
this.doVisit(this.visitExpressionStatement, this.endVisitExpressionStatement, node as ts.ExpressionStatement);
break;
case ts.SyntaxKind.NamespaceExportDeclaration:
this.doVisit(this.visitNamespaceExportDeclaration, this.endVisitNamespaceExportDeclaration, node as ts.NamespaceExportDeclaration);
break;
case ts.SyntaxKind.VariableStatement:
this.doVisit(this.visitGeneric, this.endVisitGeneric, node as ts.VariableStatement);
break;
case ts.SyntaxKind.TypeAliasDeclaration:
this.doVisit(this.visitGeneric, this.endVisitGeneric, node as ts.TypeAliasDeclaration);
break;
case ts.SyntaxKind.SetAccessor:
this.doVisit(this.visitGeneric, this.endVisitGeneric, node as ts.SetAccessorDeclaration);
break;
case ts.SyntaxKind.GetAccessor:
this.doVisit(this.visitGeneric, this.endVisitGeneric, node as ts.GetAccessorDeclaration);
break;
case ts.SyntaxKind.ArrayType:
this.doVisit(this.visitArrayType, this.endVisitArrayType, node as ts.ArrayTypeNode);
break;
case ts.SyntaxKind.Identifier:
this.visitIdentifier(node as ts.Identifier);
break;
case ts.SyntaxKind.StringLiteral:
this.visitStringLiteral(node as ts.StringLiteral);
break;
case ts.SyntaxKind.ComputedPropertyName:
this.visitComputedPropertyName(node as ts.ComputedPropertyName);
break;
default:
this.doVisit(this.visitGeneric, this.endVisitGeneric, node);
break;
}
}