(node, cbNode, cbNodeArray) {
if (!node) {
return;
}
// The visitXXX functions could be written as local functions that close over the cbNode and cbNodeArray
// callback parameters, but that causes a closure allocation for each invocation with noticeable effects
// on performance.
var visitNodes = cbNodeArray ? visitNodeArray : visitEachNode;
var cbNodes = cbNodeArray || cbNode;
switch (node.kind) {
case 141 /* QualifiedName */:
return visitNode(cbNode, node.left) ||
visitNode(cbNode, node.right);
case 143 /* TypeParameter */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.constraint) ||
visitNode(cbNode, node.expression);
case 258 /* ShorthandPropertyAssignment */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.equalsToken) ||
visitNode(cbNode, node.objectAssignmentInitializer);
case 259 /* SpreadAssignment */:
return visitNode(cbNode, node.expression);
case 144 /* Parameter */:
case 147 /* PropertyDeclaration */:
case 146 /* PropertySignature */:
case 257 /* PropertyAssignment */:
case 223 /* VariableDeclaration */:
case 174 /* BindingElement */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.propertyName) ||
visitNode(cbNode, node.dotDotDotToken) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.type) ||
visitNode(cbNode, node.initializer);
case 158 /* FunctionType */:
case 159 /* ConstructorType */:
case 153 /* CallSignature */:
case 154 /* ConstructSignature */:
case 155 /* IndexSignature */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type);
case 149 /* MethodDeclaration */:
case 148 /* MethodSignature */:
case 150 /* Constructor */:
case 151 /* GetAccessor */:
case 152 /* SetAccessor */:
case 184 /* FunctionExpression */:
case 225 /* FunctionDeclaration */:
case 185 /* ArrowFunction */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.asteriskToken) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type) ||
visitNode(cbNode, node.equalsGreaterThanToken) ||
visitNode(cbNode, node.body);
case 157 /* TypeReference */:
return visitNode(cbNode, node.typeName) ||
visitNodes(cbNodes, node.typeArguments);
case 156 /* TypePredicate */:
return visitNode(cbNode, node.parameterName) ||
visitNode(cbNode, node.type);
case 160 /* TypeQuery */:
return visitNode(cbNode, node.exprName);
case 161 /* TypeLiteral */:
return visitNodes(cbNodes, node.members);
case 162 /* ArrayType */:
return visitNode(cbNode, node.elementType);
case 163 /* TupleType */:
return visitNodes(cbNodes, node.elementTypes);
case 164 /* UnionType */:
case 165 /* IntersectionType */:
return visitNodes(cbNodes, node.types);
case 166 /* ParenthesizedType */:
case 168 /* TypeOperator */:
return visitNode(cbNode, node.type);
case 169 /* IndexedAccessType */:
return visitNode(cbNode, node.objectType) ||
visitNode(cbNode, node.indexType);
case 170 /* MappedType */:
return visitNode(cbNode, node.readonlyToken) ||
visitNode(cbNode, node.typeParameter) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.type);
case 171 /* LiteralType */:
return visitNode(cbNode, node.literal);
case 172 /* ObjectBindingPattern */:
case 173 /* ArrayBindingPattern */:
return visitNodes(cbNodes, node.elements);
case 175 /* ArrayLiteralExpression */:
return visitNodes(cbNodes, node.elements);
case 176 /* ObjectLiteralExpression */:
return visitNodes(cbNodes, node.properties);
case 177 /* PropertyAccessExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.name);
case 178 /* ElementAccessExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.argumentExpression);
case 179 /* CallExpression */:
case 180 /* NewExpression */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.typeArguments) ||
visitNodes(cbNodes, node.arguments);
case 181 /* TaggedTemplateExpression */:
return visitNode(cbNode, node.tag) ||
visitNode(cbNode, node.template);
case 182 /* TypeAssertionExpression */:
return visitNode(cbNode, node.type) ||
visitNode(cbNode, node.expression);
case 183 /* ParenthesizedExpression */:
return visitNode(cbNode, node.expression);
case 186 /* DeleteExpression */:
return visitNode(cbNode, node.expression);
case 187 /* TypeOfExpression */:
return visitNode(cbNode, node.expression);
case 188 /* VoidExpression */:
return visitNode(cbNode, node.expression);
case 190 /* PrefixUnaryExpression */:
return visitNode(cbNode, node.operand);
case 195 /* YieldExpression */:
return visitNode(cbNode, node.asteriskToken) ||
visitNode(cbNode, node.expression);
case 189 /* AwaitExpression */:
return visitNode(cbNode, node.expression);
case 191 /* PostfixUnaryExpression */:
return visitNode(cbNode, node.operand);
case 192 /* BinaryExpression */:
return visitNode(cbNode, node.left) ||
visitNode(cbNode, node.operatorToken) ||
visitNode(cbNode, node.right);
case 200 /* AsExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.type);
case 201 /* NonNullExpression */:
return visitNode(cbNode, node.expression);
case 193 /* ConditionalExpression */:
return visitNode(cbNode, node.condition) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.whenTrue) ||
visitNode(cbNode, node.colonToken) ||
visitNode(cbNode, node.whenFalse);
case 196 /* SpreadElement */:
return visitNode(cbNode, node.expression);
case 204 /* Block */:
case 231 /* ModuleBlock */:
return visitNodes(cbNodes, node.statements);
case 261 /* SourceFile */:
return visitNodes(cbNodes, node.statements) ||
visitNode(cbNode, node.endOfFileToken);
case 205 /* VariableStatement */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.declarationList);
case 224 /* VariableDeclarationList */:
return visitNodes(cbNodes, node.declarations);
case 207 /* ExpressionStatement */:
return visitNode(cbNode, node.expression);
case 208 /* IfStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.thenStatement) ||
visitNode(cbNode, node.elseStatement);
case 209 /* DoStatement */:
return visitNode(cbNode, node.statement) ||
visitNode(cbNode, node.expression);
case 210 /* WhileStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 211 /* ForStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.condition) ||
visitNode(cbNode, node.incrementor) ||
visitNode(cbNode, node.statement);
case 212 /* ForInStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 213 /* ForOfStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 214 /* ContinueStatement */:
case 215 /* BreakStatement */:
return visitNode(cbNode, node.label);
case 216 /* ReturnStatement */:
return visitNode(cbNode, node.expression);
case 217 /* WithStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 218 /* SwitchStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.caseBlock);
case 232 /* CaseBlock */:
return visitNodes(cbNodes, node.clauses);
case 253 /* CaseClause */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.statements);
case 254 /* DefaultClause */:
return visitNodes(cbNodes, node.statements);
case 219 /* LabeledStatement */:
return visitNode(cbNode, node.label) ||
visitNode(cbNode, node.statement);
case 220 /* ThrowStatement */:
return visitNode(cbNode, node.expression);
case 221 /* TryStatement */:
return visitNode(cbNode, node.tryBlock) ||
visitNode(cbNode, node.catchClause) ||
visitNode(cbNode, node.finallyBlock);
case 256 /* CatchClause */:
return visitNode(cbNode, node.variableDeclaration) ||
visitNode(cbNode, node.block);
case 145 /* Decorator */:
return visitNode(cbNode, node.expression);
case 226 /* ClassDeclaration */:
case 197 /* ClassExpression */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.heritageClauses) ||
visitNodes(cbNodes, node.members);
case 227 /* InterfaceDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.heritageClauses) ||
visitNodes(cbNodes, node.members);
case 228 /* TypeAliasDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNode(cbNode, node.type);
case 229 /* EnumDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.members);
case 260 /* EnumMember */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.initializer);
case 230 /* ModuleDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.body);
case 234 /* ImportEqualsDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.moduleReference);
case 235 /* ImportDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.importClause) ||
visitNode(cbNode, node.moduleSpecifier);
case 236 /* ImportClause */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.namedBindings);
case 233 /* NamespaceExportDeclaration */:
return visitNode(cbNode, node.name);
case 237 /* NamespaceImport */:
return visitNode(cbNode, node.name);
case 238 /* NamedImports */:
case 242 /* NamedExports */:
return visitNodes(cbNodes, node.elements);
case 241 /* ExportDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.exportClause) ||
visitNode(cbNode, node.moduleSpecifier);
case 239 /* ImportSpecifier */:
case 243 /* ExportSpecifier */:
return visitNode(cbNode, node.propertyName) ||
visitNode(cbNode, node.name);
case 240 /* ExportAssignment */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.expression);
case 194 /* TemplateExpression */:
return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans);
case 202 /* TemplateSpan */:
return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal);
case 142 /* ComputedPropertyName */:
return visitNode(cbNode, node.expression);
case 255 /* HeritageClause */:
return visitNodes(cbNodes, node.types);
case 199 /* ExpressionWithTypeArguments */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.typeArguments);
case 245 /* ExternalModuleReference */:
return visitNode(cbNode, node.expression);
case 244 /* MissingDeclaration */:
return visitNodes(cbNodes, node.decorators);
case 246 /* JsxElement */:
return visitNode(cbNode, node.openingElement) ||
visitNodes(cbNodes, node.children) ||
visitNode(cbNode, node.closingElement);
case 247 /* JsxSelfClosingElement */:
case 248 /* JsxOpeningElement */:
return visitNode(cbNode, node.tagName) ||
visitNodes(cbNodes, node.attributes);
case 250 /* JsxAttribute */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.initializer);
case 251 /* JsxSpreadAttribute */:
return visitNode(cbNode, node.expression);
case 252 /* JsxExpression */:
return visitNode(cbNode, node.expression);
case 249 /* JsxClosingElement */:
return visitNode(cbNode, node.tagName);
case 262 /* JSDocTypeExpression */:
return visitNode(cbNode, node.type);
case 266 /* JSDocUnionType */:
return visitNodes(cbNodes, node.types);
case 267 /* JSDocTupleType */:
return visitNodes(cbNodes, node.types);
case 265 /* JSDocArrayType */:
return visitNode(cbNode, node.elementType);
case 269 /* JSDocNonNullableType */:
return visitNode(cbNode, node.type);
case 268 /* JSDocNullableType */:
return visitNode(cbNode, node.type);
case 270 /* JSDocRecordType */:
return visitNode(cbNode, node.literal);
case 272 /* JSDocTypeReference */:
return visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeArguments);
case 273 /* JSDocOptionalType */:
return visitNode(cbNode, node.type);
case 274 /* JSDocFunctionType */:
return visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type);
case 275 /* JSDocVariadicType */:
return visitNode(cbNode, node.type);
case 276 /* JSDocConstructorType */:
return visitNode(cbNode, node.type);
case 277 /* JSDocThisType */:
return visitNode(cbNode, node.type);
case 271 /* JSDocRecordMember */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.type);
case 278 /* JSDocComment */:
return visitNodes(cbNodes, node.tags);
case 281 /* JSDocParameterTag */:
return visitNode(cbNode, node.preParameterName) ||
visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.postParameterName);
case 282 /* JSDocReturnTag */:
return visitNode(cbNode, node.typeExpression);
case 283 /* JSDocTypeTag */:
return visitNode(cbNode, node.typeExpression);
case 280 /* JSDocAugmentsTag */:
return visitNode(cbNode, node.typeExpression);
case 284 /* JSDocTemplateTag */:
return visitNodes(cbNodes, node.typeParameters);
case 285 /* JSDocTypedefTag */:
return visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.fullName) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.jsDocTypeLiteral);
case 287 /* JSDocTypeLiteral */:
return visitNodes(cbNodes, node.jsDocPropertyTags);
case 286 /* JSDocPropertyTag */:
return visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.name);
case 294 /* PartiallyEmittedExpression */:
return visitNode(cbNode, node.expression);
case 288 /* JSDocLiteralType */:
return visitNode(cbNode, node.literal);
}
}
(node, cbNode, cbNodeArray) {
if (!node) {
return;
}
// The visitXXX functions could be written as local functions that close over the cbNode and cbNodeArray
// callback parameters, but that causes a closure allocation for each invocation with noticeable effects
// on performance.
var visitNodes = cbNodeArray ? visitNodeArray : visitEachNode;
var cbNodes = cbNodeArray || cbNode;
switch (node.kind) {
case 141 /* QualifiedName */:
return visitNode(cbNode, node.left) ||
visitNode(cbNode, node.right);
case 143 /* TypeParameter */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.constraint) ||
visitNode(cbNode, node.expression);
case 258 /* ShorthandPropertyAssignment */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.equalsToken) ||
visitNode(cbNode, node.objectAssignmentInitializer);
case 259 /* SpreadAssignment */:
return visitNode(cbNode, node.expression);
case 144 /* Parameter */:
case 147 /* PropertyDeclaration */:
case 146 /* PropertySignature */:
case 257 /* PropertyAssignment */:
case 223 /* VariableDeclaration */:
case 174 /* BindingElement */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.propertyName) ||
visitNode(cbNode, node.dotDotDotToken) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.type) ||
visitNode(cbNode, node.initializer);
case 158 /* FunctionType */:
case 159 /* ConstructorType */:
case 153 /* CallSignature */:
case 154 /* ConstructSignature */:
case 155 /* IndexSignature */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type);
case 149 /* MethodDeclaration */:
case 148 /* MethodSignature */:
case 150 /* Constructor */:
case 151 /* GetAccessor */:
case 152 /* SetAccessor */:
case 184 /* FunctionExpression */:
case 225 /* FunctionDeclaration */:
case 185 /* ArrowFunction */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.asteriskToken) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type) ||
visitNode(cbNode, node.equalsGreaterThanToken) ||
visitNode(cbNode, node.body);
case 157 /* TypeReference */:
return visitNode(cbNode, node.typeName) ||
visitNodes(cbNodes, node.typeArguments);
case 156 /* TypePredicate */:
return visitNode(cbNode, node.parameterName) ||
visitNode(cbNode, node.type);
case 160 /* TypeQuery */:
return visitNode(cbNode, node.exprName);
case 161 /* TypeLiteral */:
return visitNodes(cbNodes, node.members);
case 162 /* ArrayType */:
return visitNode(cbNode, node.elementType);
case 163 /* TupleType */:
return visitNodes(cbNodes, node.elementTypes);
case 164 /* UnionType */:
case 165 /* IntersectionType */:
return visitNodes(cbNodes, node.types);
case 166 /* ParenthesizedType */:
case 168 /* TypeOperator */:
return visitNode(cbNode, node.type);
case 169 /* IndexedAccessType */:
return visitNode(cbNode, node.objectType) ||
visitNode(cbNode, node.indexType);
case 170 /* MappedType */:
return visitNode(cbNode, node.readonlyToken) ||
visitNode(cbNode, node.typeParameter) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.type);
case 171 /* LiteralType */:
return visitNode(cbNode, node.literal);
case 172 /* ObjectBindingPattern */:
case 173 /* ArrayBindingPattern */:
return visitNodes(cbNodes, node.elements);
case 175 /* ArrayLiteralExpression */:
return visitNodes(cbNodes, node.elements);
case 176 /* ObjectLiteralExpression */:
return visitNodes(cbNodes, node.properties);
case 177 /* PropertyAccessExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.name);
case 178 /* ElementAccessExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.argumentExpression);
case 179 /* CallExpression */:
case 180 /* NewExpression */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.typeArguments) ||
visitNodes(cbNodes, node.arguments);
case 181 /* TaggedTemplateExpression */:
return visitNode(cbNode, node.tag) ||
visitNode(cbNode, node.template);
case 182 /* TypeAssertionExpression */:
return visitNode(cbNode, node.type) ||
visitNode(cbNode, node.expression);
case 183 /* ParenthesizedExpression */:
return visitNode(cbNode, node.expression);
case 186 /* DeleteExpression */:
return visitNode(cbNode, node.expression);
case 187 /* TypeOfExpression */:
return visitNode(cbNode, node.expression);
case 188 /* VoidExpression */:
return visitNode(cbNode, node.expression);
case 190 /* PrefixUnaryExpression */:
return visitNode(cbNode, node.operand);
case 195 /* YieldExpression */:
return visitNode(cbNode, node.asteriskToken) ||
visitNode(cbNode, node.expression);
case 189 /* AwaitExpression */:
return visitNode(cbNode, node.expression);
case 191 /* PostfixUnaryExpression */:
return visitNode(cbNode, node.operand);
case 192 /* BinaryExpression */:
return visitNode(cbNode, node.left) ||
visitNode(cbNode, node.operatorToken) ||
visitNode(cbNode, node.right);
case 200 /* AsExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.type);
case 201 /* NonNullExpression */:
return visitNode(cbNode, node.expression);
case 193 /* ConditionalExpression */:
return visitNode(cbNode, node.condition) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.whenTrue) ||
visitNode(cbNode, node.colonToken) ||
visitNode(cbNode, node.whenFalse);
case 196 /* SpreadElement */:
return visitNode(cbNode, node.expression);
case 204 /* Block */:
case 231 /* ModuleBlock */:
return visitNodes(cbNodes, node.statements);
case 261 /* SourceFile */:
return visitNodes(cbNodes, node.statements) ||
visitNode(cbNode, node.endOfFileToken);
case 205 /* VariableStatement */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.declarationList);
case 224 /* VariableDeclarationList */:
return visitNodes(cbNodes, node.declarations);
case 207 /* ExpressionStatement */:
return visitNode(cbNode, node.expression);
case 208 /* IfStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.thenStatement) ||
visitNode(cbNode, node.elseStatement);
case 209 /* DoStatement */:
return visitNode(cbNode, node.statement) ||
visitNode(cbNode, node.expression);
case 210 /* WhileStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 211 /* ForStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.condition) ||
visitNode(cbNode, node.incrementor) ||
visitNode(cbNode, node.statement);
case 212 /* ForInStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 213 /* ForOfStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 214 /* ContinueStatement */:
case 215 /* BreakStatement */:
return visitNode(cbNode, node.label);
case 216 /* ReturnStatement */:
return visitNode(cbNode, node.expression);
case 217 /* WithStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 218 /* SwitchStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.caseBlock);
case 232 /* CaseBlock */:
return visitNodes(cbNodes, node.clauses);
case 253 /* CaseClause */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.statements);
case 254 /* DefaultClause */:
return visitNodes(cbNodes, node.statements);
case 219 /* LabeledStatement */:
return visitNode(cbNode, node.label) ||
visitNode(cbNode, node.statement);
case 220 /* ThrowStatement */:
return visitNode(cbNode, node.expression);
case 221 /* TryStatement */:
return visitNode(cbNode, node.tryBlock) ||
visitNode(cbNode, node.catchClause) ||
visitNode(cbNode, node.finallyBlock);
case 256 /* CatchClause */:
return visitNode(cbNode, node.variableDeclaration) ||
visitNode(cbNode, node.block);
case 145 /* Decorator */:
return visitNode(cbNode, node.expression);
case 226 /* ClassDeclaration */:
case 197 /* ClassExpression */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.heritageClauses) ||
visitNodes(cbNodes, node.members);
case 227 /* InterfaceDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.heritageClauses) ||
visitNodes(cbNodes, node.members);
case 228 /* TypeAliasDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNode(cbNode, node.type);
case 229 /* EnumDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.members);
case 260 /* EnumMember */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.initializer);
case 230 /* ModuleDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.body);
case 234 /* ImportEqualsDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.moduleReference);
case 235 /* ImportDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.importClause) ||
visitNode(cbNode, node.moduleSpecifier);
case 236 /* ImportClause */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.namedBindings);
case 233 /* NamespaceExportDeclaration */:
return visitNode(cbNode, node.name);
case 237 /* NamespaceImport */:
return visitNode(cbNode, node.name);
case 238 /* NamedImports */:
case 242 /* NamedExports */:
return visitNodes(cbNodes, node.elements);
case 241 /* ExportDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.exportClause) ||
visitNode(cbNode, node.moduleSpecifier);
case 239 /* ImportSpecifier */:
case 243 /* ExportSpecifier */:
return visitNode(cbNode, node.propertyName) ||
visitNode(cbNode, node.name);
case 240 /* ExportAssignment */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.expression);
case 194 /* TemplateExpression */:
return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans);
case 202 /* TemplateSpan */:
return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal);
case 142 /* ComputedPropertyName */:
return visitNode(cbNode, node.expression);
case 255 /* HeritageClause */:
return visitNodes(cbNodes, node.types);
case 199 /* ExpressionWithTypeArguments */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.typeArguments);
case 245 /* ExternalModuleReference */:
return visitNode(cbNode, node.expression);
case 244 /* MissingDeclaration */:
return visitNodes(cbNodes, node.decorators);
case 246 /* JsxElement */:
return visitNode(cbNode, node.openingElement) ||
visitNodes(cbNodes, node.children) ||
visitNode(cbNode, node.closingElement);
case 247 /* JsxSelfClosingElement */:
case 248 /* JsxOpeningElement */:
return visitNode(cbNode, node.tagName) ||
visitNodes(cbNodes, node.attributes);
case 250 /* JsxAttribute */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.initializer);
case 251 /* JsxSpreadAttribute */:
return visitNode(cbNode, node.expression);
case 252 /* JsxExpression */:
return visitNode(cbNode, node.expression);
case 249 /* JsxClosingElement */:
return visitNode(cbNode, node.tagName);
case 262 /* JSDocTypeExpression */:
return visitNode(cbNode, node.type);
case 266 /* JSDocUnionType */:
return visitNodes(cbNodes, node.types);
case 267 /* JSDocTupleType */:
return visitNodes(cbNodes, node.types);
case 265 /* JSDocArrayType */:
return visitNode(cbNode, node.elementType);
case 269 /* JSDocNonNullableType */:
return visitNode(cbNode, node.type);
case 268 /* JSDocNullableType */:
return visitNode(cbNode, node.type);
case 270 /* JSDocRecordType */:
return visitNode(cbNode, node.literal);
case 272 /* JSDocTypeReference */:
return visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeArguments);
case 273 /* JSDocOptionalType */:
return visitNode(cbNode, node.type);
case 274 /* JSDocFunctionType */:
return visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type);
case 275 /* JSDocVariadicType */:
return visitNode(cbNode, node.type);
case 276 /* JSDocConstructorType */:
return visitNode(cbNode, node.type);
case 277 /* JSDocThisType */:
return visitNode(cbNode, node.type);
case 271 /* JSDocRecordMember */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.type);
case 278 /* JSDocComment */:
return visitNodes(cbNodes, node.tags);
case 281 /* JSDocParameterTag */:
return visitNode(cbNode, node.preParameterName) ||
visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.postParameterName);
case 282 /* JSDocReturnTag */:
return visitNode(cbNode, node.typeExpression);
case 283 /* JSDocTypeTag */:
return visitNode(cbNode, node.typeExpression);
case 280 /* JSDocAugmentsTag */:
return visitNode(cbNode, node.typeExpression);
case 284 /* JSDocTemplateTag */:
return visitNodes(cbNodes, node.typeParameters);
case 285 /* JSDocTypedefTag */:
return visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.fullName) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.jsDocTypeLiteral);
case 287 /* JSDocTypeLiteral */:
return visitNodes(cbNodes, node.jsDocPropertyTags);
case 286 /* JSDocPropertyTag */:
return visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.name);
case 294 /* PartiallyEmittedExpression */:
return visitNode(cbNode, node.expression);
case 288 /* JSDocLiteralType */:
return visitNode(cbNode, node.literal);
}
}
(node, cbNode, cbNodeArray) {
if (!node) {
return;
}
// The visitXXX functions could be written as local functions that close over the cbNode and cbNodeArray
// callback parameters, but that causes a closure allocation for each invocation with noticeable effects
// on performance.
var visitNodes = cbNodeArray ? visitNodeArray : visitEachNode;
var cbNodes = cbNodeArray || cbNode;
switch (node.kind) {
case 141 /* QualifiedName */:
return visitNode(cbNode, node.left) ||
visitNode(cbNode, node.right);
case 143 /* TypeParameter */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.constraint) ||
visitNode(cbNode, node.expression);
case 258 /* ShorthandPropertyAssignment */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.equalsToken) ||
visitNode(cbNode, node.objectAssignmentInitializer);
case 259 /* SpreadAssignment */:
return visitNode(cbNode, node.expression);
case 144 /* Parameter */:
case 147 /* PropertyDeclaration */:
case 146 /* PropertySignature */:
case 257 /* PropertyAssignment */:
case 223 /* VariableDeclaration */:
case 174 /* BindingElement */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.propertyName) ||
visitNode(cbNode, node.dotDotDotToken) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.type) ||
visitNode(cbNode, node.initializer);
case 158 /* FunctionType */:
case 159 /* ConstructorType */:
case 153 /* CallSignature */:
case 154 /* ConstructSignature */:
case 155 /* IndexSignature */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type);
case 149 /* MethodDeclaration */:
case 148 /* MethodSignature */:
case 150 /* Constructor */:
case 151 /* GetAccessor */:
case 152 /* SetAccessor */:
case 184 /* FunctionExpression */:
case 225 /* FunctionDeclaration */:
case 185 /* ArrowFunction */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.asteriskToken) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type) ||
visitNode(cbNode, node.equalsGreaterThanToken) ||
visitNode(cbNode, node.body);
case 157 /* TypeReference */:
return visitNode(cbNode, node.typeName) ||
visitNodes(cbNodes, node.typeArguments);
case 156 /* TypePredicate */:
return visitNode(cbNode, node.parameterName) ||
visitNode(cbNode, node.type);
case 160 /* TypeQuery */:
return visitNode(cbNode, node.exprName);
case 161 /* TypeLiteral */:
return visitNodes(cbNodes, node.members);
case 162 /* ArrayType */:
return visitNode(cbNode, node.elementType);
case 163 /* TupleType */:
return visitNodes(cbNodes, node.elementTypes);
case 164 /* UnionType */:
case 165 /* IntersectionType */:
return visitNodes(cbNodes, node.types);
case 166 /* ParenthesizedType */:
case 168 /* TypeOperator */:
return visitNode(cbNode, node.type);
case 169 /* IndexedAccessType */:
return visitNode(cbNode, node.objectType) ||
visitNode(cbNode, node.indexType);
case 170 /* MappedType */:
return visitNode(cbNode, node.readonlyToken) ||
visitNode(cbNode, node.typeParameter) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.type);
case 171 /* LiteralType */:
return visitNode(cbNode, node.literal);
case 172 /* ObjectBindingPattern */:
case 173 /* ArrayBindingPattern */:
return visitNodes(cbNodes, node.elements);
case 175 /* ArrayLiteralExpression */:
return visitNodes(cbNodes, node.elements);
case 176 /* ObjectLiteralExpression */:
return visitNodes(cbNodes, node.properties);
case 177 /* PropertyAccessExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.name);
case 178 /* ElementAccessExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.argumentExpression);
case 179 /* CallExpression */:
case 180 /* NewExpression */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.typeArguments) ||
visitNodes(cbNodes, node.arguments);
case 181 /* TaggedTemplateExpression */:
return visitNode(cbNode, node.tag) ||
visitNode(cbNode, node.template);
case 182 /* TypeAssertionExpression */:
return visitNode(cbNode, node.type) ||
visitNode(cbNode, node.expression);
case 183 /* ParenthesizedExpression */:
return visitNode(cbNode, node.expression);
case 186 /* DeleteExpression */:
return visitNode(cbNode, node.expression);
case 187 /* TypeOfExpression */:
return visitNode(cbNode, node.expression);
case 188 /* VoidExpression */:
return visitNode(cbNode, node.expression);
case 190 /* PrefixUnaryExpression */:
return visitNode(cbNode, node.operand);
case 195 /* YieldExpression */:
return visitNode(cbNode, node.asteriskToken) ||
visitNode(cbNode, node.expression);
case 189 /* AwaitExpression */:
return visitNode(cbNode, node.expression);
case 191 /* PostfixUnaryExpression */:
return visitNode(cbNode, node.operand);
case 192 /* BinaryExpression */:
return visitNode(cbNode, node.left) ||
visitNode(cbNode, node.operatorToken) ||
visitNode(cbNode, node.right);
case 200 /* AsExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.type);
case 201 /* NonNullExpression */:
return visitNode(cbNode, node.expression);
case 193 /* ConditionalExpression */:
return visitNode(cbNode, node.condition) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.whenTrue) ||
visitNode(cbNode, node.colonToken) ||
visitNode(cbNode, node.whenFalse);
case 196 /* SpreadElement */:
return visitNode(cbNode, node.expression);
case 204 /* Block */:
case 231 /* ModuleBlock */:
return visitNodes(cbNodes, node.statements);
case 261 /* SourceFile */:
return visitNodes(cbNodes, node.statements) ||
visitNode(cbNode, node.endOfFileToken);
case 205 /* VariableStatement */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.declarationList);
case 224 /* VariableDeclarationList */:
return visitNodes(cbNodes, node.declarations);
case 207 /* ExpressionStatement */:
return visitNode(cbNode, node.expression);
case 208 /* IfStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.thenStatement) ||
visitNode(cbNode, node.elseStatement);
case 209 /* DoStatement */:
return visitNode(cbNode, node.statement) ||
visitNode(cbNode, node.expression);
case 210 /* WhileStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 211 /* ForStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.condition) ||
visitNode(cbNode, node.incrementor) ||
visitNode(cbNode, node.statement);
case 212 /* ForInStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 213 /* ForOfStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 214 /* ContinueStatement */:
case 215 /* BreakStatement */:
return visitNode(cbNode, node.label);
case 216 /* ReturnStatement */:
return visitNode(cbNode, node.expression);
case 217 /* WithStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 218 /* SwitchStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.caseBlock);
case 232 /* CaseBlock */:
return visitNodes(cbNodes, node.clauses);
case 253 /* CaseClause */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.statements);
case 254 /* DefaultClause */:
return visitNodes(cbNodes, node.statements);
case 219 /* LabeledStatement */:
return visitNode(cbNode, node.label) ||
visitNode(cbNode, node.statement);
case 220 /* ThrowStatement */:
return visitNode(cbNode, node.expression);
case 221 /* TryStatement */:
return visitNode(cbNode, node.tryBlock) ||
visitNode(cbNode, node.catchClause) ||
visitNode(cbNode, node.finallyBlock);
case 256 /* CatchClause */:
return visitNode(cbNode, node.variableDeclaration) ||
visitNode(cbNode, node.block);
case 145 /* Decorator */:
return visitNode(cbNode, node.expression);
case 226 /* ClassDeclaration */:
case 197 /* ClassExpression */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.heritageClauses) ||
visitNodes(cbNodes, node.members);
case 227 /* InterfaceDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.heritageClauses) ||
visitNodes(cbNodes, node.members);
case 228 /* TypeAliasDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNode(cbNode, node.type);
case 229 /* EnumDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.members);
case 260 /* EnumMember */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.initializer);
case 230 /* ModuleDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.body);
case 234 /* ImportEqualsDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.moduleReference);
case 235 /* ImportDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.importClause) ||
visitNode(cbNode, node.moduleSpecifier);
case 236 /* ImportClause */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.namedBindings);
case 233 /* NamespaceExportDeclaration */:
return visitNode(cbNode, node.name);
case 237 /* NamespaceImport */:
return visitNode(cbNode, node.name);
case 238 /* NamedImports */:
case 242 /* NamedExports */:
return visitNodes(cbNodes, node.elements);
case 241 /* ExportDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.exportClause) ||
visitNode(cbNode, node.moduleSpecifier);
case 239 /* ImportSpecifier */:
case 243 /* ExportSpecifier */:
return visitNode(cbNode, node.propertyName) ||
visitNode(cbNode, node.name);
case 240 /* ExportAssignment */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.expression);
case 194 /* TemplateExpression */:
return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans);
case 202 /* TemplateSpan */:
return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal);
case 142 /* ComputedPropertyName */:
return visitNode(cbNode, node.expression);
case 255 /* HeritageClause */:
return visitNodes(cbNodes, node.types);
case 199 /* ExpressionWithTypeArguments */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.typeArguments);
case 245 /* ExternalModuleReference */:
return visitNode(cbNode, node.expression);
case 244 /* MissingDeclaration */:
return visitNodes(cbNodes, node.decorators);
case 246 /* JsxElement */:
return visitNode(cbNode, node.openingElement) ||
visitNodes(cbNodes, node.children) ||
visitNode(cbNode, node.closingElement);
case 247 /* JsxSelfClosingElement */:
case 248 /* JsxOpeningElement */:
return visitNode(cbNode, node.tagName) ||
visitNodes(cbNodes, node.attributes);
case 250 /* JsxAttribute */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.initializer);
case 251 /* JsxSpreadAttribute */:
return visitNode(cbNode, node.expression);
case 252 /* JsxExpression */:
return visitNode(cbNode, node.expression);
case 249 /* JsxClosingElement */:
return visitNode(cbNode, node.tagName);
case 262 /* JSDocTypeExpression */:
return visitNode(cbNode, node.type);
case 266 /* JSDocUnionType */:
return visitNodes(cbNodes, node.types);
case 267 /* JSDocTupleType */:
return visitNodes(cbNodes, node.types);
case 265 /* JSDocArrayType */:
return visitNode(cbNode, node.elementType);
case 269 /* JSDocNonNullableType */:
return visitNode(cbNode, node.type);
case 268 /* JSDocNullableType */:
return visitNode(cbNode, node.type);
case 270 /* JSDocRecordType */:
return visitNode(cbNode, node.literal);
case 272 /* JSDocTypeReference */:
return visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeArguments);
case 273 /* JSDocOptionalType */:
return visitNode(cbNode, node.type);
case 274 /* JSDocFunctionType */:
return visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type);
case 275 /* JSDocVariadicType */:
return visitNode(cbNode, node.type);
case 276 /* JSDocConstructorType */:
return visitNode(cbNode, node.type);
case 277 /* JSDocThisType */:
return visitNode(cbNode, node.type);
case 271 /* JSDocRecordMember */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.type);
case 278 /* JSDocComment */:
return visitNodes(cbNodes, node.tags);
case 281 /* JSDocParameterTag */:
return visitNode(cbNode, node.preParameterName) ||
visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.postParameterName);
case 282 /* JSDocReturnTag */:
return visitNode(cbNode, node.typeExpression);
case 283 /* JSDocTypeTag */:
return visitNode(cbNode, node.typeExpression);
case 280 /* JSDocAugmentsTag */:
return visitNode(cbNode, node.typeExpression);
case 284 /* JSDocTemplateTag */:
return visitNodes(cbNodes, node.typeParameters);
case 285 /* JSDocTypedefTag */:
return visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.fullName) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.jsDocTypeLiteral);
case 287 /* JSDocTypeLiteral */:
return visitNodes(cbNodes, node.jsDocPropertyTags);
case 286 /* JSDocPropertyTag */:
return visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.name);
case 294 /* PartiallyEmittedExpression */:
return visitNode(cbNode, node.expression);
case 288 /* JSDocLiteralType */:
return visitNode(cbNode, node.literal);
}
}
(node, cbNode, cbNodeArray) {
if (!node) {
return;
}
// The visitXXX functions could be written as local functions that close over the cbNode and cbNodeArray
// callback parameters, but that causes a closure allocation for each invocation with noticeable effects
// on performance.
var visitNodes = cbNodeArray ? visitNodeArray : visitEachNode;
var cbNodes = cbNodeArray || cbNode;
switch (node.kind) {
case 141 /* QualifiedName */:
return visitNode(cbNode, node.left) ||
visitNode(cbNode, node.right);
case 143 /* TypeParameter */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.constraint) ||
visitNode(cbNode, node.expression);
case 258 /* ShorthandPropertyAssignment */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.equalsToken) ||
visitNode(cbNode, node.objectAssignmentInitializer);
case 259 /* SpreadAssignment */:
return visitNode(cbNode, node.expression);
case 144 /* Parameter */:
case 147 /* PropertyDeclaration */:
case 146 /* PropertySignature */:
case 257 /* PropertyAssignment */:
case 223 /* VariableDeclaration */:
case 174 /* BindingElement */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.propertyName) ||
visitNode(cbNode, node.dotDotDotToken) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.type) ||
visitNode(cbNode, node.initializer);
case 158 /* FunctionType */:
case 159 /* ConstructorType */:
case 153 /* CallSignature */:
case 154 /* ConstructSignature */:
case 155 /* IndexSignature */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type);
case 149 /* MethodDeclaration */:
case 148 /* MethodSignature */:
case 150 /* Constructor */:
case 151 /* GetAccessor */:
case 152 /* SetAccessor */:
case 184 /* FunctionExpression */:
case 225 /* FunctionDeclaration */:
case 185 /* ArrowFunction */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.asteriskToken) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type) ||
visitNode(cbNode, node.equalsGreaterThanToken) ||
visitNode(cbNode, node.body);
case 157 /* TypeReference */:
return visitNode(cbNode, node.typeName) ||
visitNodes(cbNodes, node.typeArguments);
case 156 /* TypePredicate */:
return visitNode(cbNode, node.parameterName) ||
visitNode(cbNode, node.type);
case 160 /* TypeQuery */:
return visitNode(cbNode, node.exprName);
case 161 /* TypeLiteral */:
return visitNodes(cbNodes, node.members);
case 162 /* ArrayType */:
return visitNode(cbNode, node.elementType);
case 163 /* TupleType */:
return visitNodes(cbNodes, node.elementTypes);
case 164 /* UnionType */:
case 165 /* IntersectionType */:
return visitNodes(cbNodes, node.types);
case 166 /* ParenthesizedType */:
case 168 /* TypeOperator */:
return visitNode(cbNode, node.type);
case 169 /* IndexedAccessType */:
return visitNode(cbNode, node.objectType) ||
visitNode(cbNode, node.indexType);
case 170 /* MappedType */:
return visitNode(cbNode, node.readonlyToken) ||
visitNode(cbNode, node.typeParameter) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.type);
case 171 /* LiteralType */:
return visitNode(cbNode, node.literal);
case 172 /* ObjectBindingPattern */:
case 173 /* ArrayBindingPattern */:
return visitNodes(cbNodes, node.elements);
case 175 /* ArrayLiteralExpression */:
return visitNodes(cbNodes, node.elements);
case 176 /* ObjectLiteralExpression */:
return visitNodes(cbNodes, node.properties);
case 177 /* PropertyAccessExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.name);
case 178 /* ElementAccessExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.argumentExpression);
case 179 /* CallExpression */:
case 180 /* NewExpression */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.typeArguments) ||
visitNodes(cbNodes, node.arguments);
case 181 /* TaggedTemplateExpression */:
return visitNode(cbNode, node.tag) ||
visitNode(cbNode, node.template);
case 182 /* TypeAssertionExpression */:
return visitNode(cbNode, node.type) ||
visitNode(cbNode, node.expression);
case 183 /* ParenthesizedExpression */:
return visitNode(cbNode, node.expression);
case 186 /* DeleteExpression */:
return visitNode(cbNode, node.expression);
case 187 /* TypeOfExpression */:
return visitNode(cbNode, node.expression);
case 188 /* VoidExpression */:
return visitNode(cbNode, node.expression);
case 190 /* PrefixUnaryExpression */:
return visitNode(cbNode, node.operand);
case 195 /* YieldExpression */:
return visitNode(cbNode, node.asteriskToken) ||
visitNode(cbNode, node.expression);
case 189 /* AwaitExpression */:
return visitNode(cbNode, node.expression);
case 191 /* PostfixUnaryExpression */:
return visitNode(cbNode, node.operand);
case 192 /* BinaryExpression */:
return visitNode(cbNode, node.left) ||
visitNode(cbNode, node.operatorToken) ||
visitNode(cbNode, node.right);
case 200 /* AsExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.type);
case 201 /* NonNullExpression */:
return visitNode(cbNode, node.expression);
case 193 /* ConditionalExpression */:
return visitNode(cbNode, node.condition) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.whenTrue) ||
visitNode(cbNode, node.colonToken) ||
visitNode(cbNode, node.whenFalse);
case 196 /* SpreadElement */:
return visitNode(cbNode, node.expression);
case 204 /* Block */:
case 231 /* ModuleBlock */:
return visitNodes(cbNodes, node.statements);
case 261 /* SourceFile */:
return visitNodes(cbNodes, node.statements) ||
visitNode(cbNode, node.endOfFileToken);
case 205 /* VariableStatement */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.declarationList);
case 224 /* VariableDeclarationList */:
return visitNodes(cbNodes, node.declarations);
case 207 /* ExpressionStatement */:
return visitNode(cbNode, node.expression);
case 208 /* IfStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.thenStatement) ||
visitNode(cbNode, node.elseStatement);
case 209 /* DoStatement */:
return visitNode(cbNode, node.statement) ||
visitNode(cbNode, node.expression);
case 210 /* WhileStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 211 /* ForStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.condition) ||
visitNode(cbNode, node.incrementor) ||
visitNode(cbNode, node.statement);
case 212 /* ForInStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 213 /* ForOfStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 214 /* ContinueStatement */:
case 215 /* BreakStatement */:
return visitNode(cbNode, node.label);
case 216 /* ReturnStatement */:
return visitNode(cbNode, node.expression);
case 217 /* WithStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 218 /* SwitchStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.caseBlock);
case 232 /* CaseBlock */:
return visitNodes(cbNodes, node.clauses);
case 253 /* CaseClause */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.statements);
case 254 /* DefaultClause */:
return visitNodes(cbNodes, node.statements);
case 219 /* LabeledStatement */:
return visitNode(cbNode, node.label) ||
visitNode(cbNode, node.statement);
case 220 /* ThrowStatement */:
return visitNode(cbNode, node.expression);
case 221 /* TryStatement */:
return visitNode(cbNode, node.tryBlock) ||
visitNode(cbNode, node.catchClause) ||
visitNode(cbNode, node.finallyBlock);
case 256 /* CatchClause */:
return visitNode(cbNode, node.variableDeclaration) ||
visitNode(cbNode, node.block);
case 145 /* Decorator */:
return visitNode(cbNode, node.expression);
case 226 /* ClassDeclaration */:
case 197 /* ClassExpression */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.heritageClauses) ||
visitNodes(cbNodes, node.members);
case 227 /* InterfaceDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.heritageClauses) ||
visitNodes(cbNodes, node.members);
case 228 /* TypeAliasDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNode(cbNode, node.type);
case 229 /* EnumDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.members);
case 260 /* EnumMember */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.initializer);
case 230 /* ModuleDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.body);
case 234 /* ImportEqualsDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.moduleReference);
case 235 /* ImportDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.importClause) ||
visitNode(cbNode, node.moduleSpecifier);
case 236 /* ImportClause */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.namedBindings);
case 233 /* NamespaceExportDeclaration */:
return visitNode(cbNode, node.name);
case 237 /* NamespaceImport */:
return visitNode(cbNode, node.name);
case 238 /* NamedImports */:
case 242 /* NamedExports */:
return visitNodes(cbNodes, node.elements);
case 241 /* ExportDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.exportClause) ||
visitNode(cbNode, node.moduleSpecifier);
case 239 /* ImportSpecifier */:
case 243 /* ExportSpecifier */:
return visitNode(cbNode, node.propertyName) ||
visitNode(cbNode, node.name);
case 240 /* ExportAssignment */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.expression);
case 194 /* TemplateExpression */:
return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans);
case 202 /* TemplateSpan */:
return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal);
case 142 /* ComputedPropertyName */:
return visitNode(cbNode, node.expression);
case 255 /* HeritageClause */:
return visitNodes(cbNodes, node.types);
case 199 /* ExpressionWithTypeArguments */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.typeArguments);
case 245 /* ExternalModuleReference */:
return visitNode(cbNode, node.expression);
case 244 /* MissingDeclaration */:
return visitNodes(cbNodes, node.decorators);
case 246 /* JsxElement */:
return visitNode(cbNode, node.openingElement) ||
visitNodes(cbNodes, node.children) ||
visitNode(cbNode, node.closingElement);
case 247 /* JsxSelfClosingElement */:
case 248 /* JsxOpeningElement */:
return visitNode(cbNode, node.tagName) ||
visitNodes(cbNodes, node.attributes);
case 250 /* JsxAttribute */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.initializer);
case 251 /* JsxSpreadAttribute */:
return visitNode(cbNode, node.expression);
case 252 /* JsxExpression */:
return visitNode(cbNode, node.expression);
case 249 /* JsxClosingElement */:
return visitNode(cbNode, node.tagName);
case 262 /* JSDocTypeExpression */:
return visitNode(cbNode, node.type);
case 266 /* JSDocUnionType */:
return visitNodes(cbNodes, node.types);
case 267 /* JSDocTupleType */:
return visitNodes(cbNodes, node.types);
case 265 /* JSDocArrayType */:
return visitNode(cbNode, node.elementType);
case 269 /* JSDocNonNullableType */:
return visitNode(cbNode, node.type);
case 268 /* JSDocNullableType */:
return visitNode(cbNode, node.type);
case 270 /* JSDocRecordType */:
return visitNode(cbNode, node.literal);
case 272 /* JSDocTypeReference */:
return visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeArguments);
case 273 /* JSDocOptionalType */:
return visitNode(cbNode, node.type);
case 274 /* JSDocFunctionType */:
return visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type);
case 275 /* JSDocVariadicType */:
return visitNode(cbNode, node.type);
case 276 /* JSDocConstructorType */:
return visitNode(cbNode, node.type);
case 277 /* JSDocThisType */:
return visitNode(cbNode, node.type);
case 271 /* JSDocRecordMember */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.type);
case 278 /* JSDocComment */:
return visitNodes(cbNodes, node.tags);
case 281 /* JSDocParameterTag */:
return visitNode(cbNode, node.preParameterName) ||
visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.postParameterName);
case 282 /* JSDocReturnTag */:
return visitNode(cbNode, node.typeExpression);
case 283 /* JSDocTypeTag */:
return visitNode(cbNode, node.typeExpression);
case 280 /* JSDocAugmentsTag */:
return visitNode(cbNode, node.typeExpression);
case 284 /* JSDocTemplateTag */:
return visitNodes(cbNodes, node.typeParameters);
case 285 /* JSDocTypedefTag */:
return visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.fullName) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.jsDocTypeLiteral);
case 287 /* JSDocTypeLiteral */:
return visitNodes(cbNodes, node.jsDocPropertyTags);
case 286 /* JSDocPropertyTag */:
return visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.name);
case 294 /* PartiallyEmittedExpression */:
return visitNode(cbNode, node.expression);
case 288 /* JSDocLiteralType */:
return visitNode(cbNode, node.literal);
}
}
(node, cbNode, cbNodeArray) {
if (!node) {
return;
}
// The visitXXX functions could be written as local functions that close over the cbNode and cbNodeArray
// callback parameters, but that causes a closure allocation for each invocation with noticeable effects
// on performance.
var visitNodes = cbNodeArray ? visitNodeArray : visitEachNode;
var cbNodes = cbNodeArray || cbNode;
switch (node.kind) {
case 141 /* QualifiedName */:
return visitNode(cbNode, node.left) ||
visitNode(cbNode, node.right);
case 143 /* TypeParameter */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.constraint) ||
visitNode(cbNode, node.expression);
case 258 /* ShorthandPropertyAssignment */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.equalsToken) ||
visitNode(cbNode, node.objectAssignmentInitializer);
case 259 /* SpreadAssignment */:
return visitNode(cbNode, node.expression);
case 144 /* Parameter */:
case 147 /* PropertyDeclaration */:
case 146 /* PropertySignature */:
case 257 /* PropertyAssignment */:
case 223 /* VariableDeclaration */:
case 174 /* BindingElement */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.propertyName) ||
visitNode(cbNode, node.dotDotDotToken) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.type) ||
visitNode(cbNode, node.initializer);
case 158 /* FunctionType */:
case 159 /* ConstructorType */:
case 153 /* CallSignature */:
case 154 /* ConstructSignature */:
case 155 /* IndexSignature */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type);
case 149 /* MethodDeclaration */:
case 148 /* MethodSignature */:
case 150 /* Constructor */:
case 151 /* GetAccessor */:
case 152 /* SetAccessor */:
case 184 /* FunctionExpression */:
case 225 /* FunctionDeclaration */:
case 185 /* ArrowFunction */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.asteriskToken) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type) ||
visitNode(cbNode, node.equalsGreaterThanToken) ||
visitNode(cbNode, node.body);
case 157 /* TypeReference */:
return visitNode(cbNode, node.typeName) ||
visitNodes(cbNodes, node.typeArguments);
case 156 /* TypePredicate */:
return visitNode(cbNode, node.parameterName) ||
visitNode(cbNode, node.type);
case 160 /* TypeQuery */:
return visitNode(cbNode, node.exprName);
case 161 /* TypeLiteral */:
return visitNodes(cbNodes, node.members);
case 162 /* ArrayType */:
return visitNode(cbNode, node.elementType);
case 163 /* TupleType */:
return visitNodes(cbNodes, node.elementTypes);
case 164 /* UnionType */:
case 165 /* IntersectionType */:
return visitNodes(cbNodes, node.types);
case 166 /* ParenthesizedType */:
case 168 /* TypeOperator */:
return visitNode(cbNode, node.type);
case 169 /* IndexedAccessType */:
return visitNode(cbNode, node.objectType) ||
visitNode(cbNode, node.indexType);
case 170 /* MappedType */:
return visitNode(cbNode, node.readonlyToken) ||
visitNode(cbNode, node.typeParameter) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.type);
case 171 /* LiteralType */:
return visitNode(cbNode, node.literal);
case 172 /* ObjectBindingPattern */:
case 173 /* ArrayBindingPattern */:
return visitNodes(cbNodes, node.elements);
case 175 /* ArrayLiteralExpression */:
return visitNodes(cbNodes, node.elements);
case 176 /* ObjectLiteralExpression */:
return visitNodes(cbNodes, node.properties);
case 177 /* PropertyAccessExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.name);
case 178 /* ElementAccessExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.argumentExpression);
case 179 /* CallExpression */:
case 180 /* NewExpression */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.typeArguments) ||
visitNodes(cbNodes, node.arguments);
case 181 /* TaggedTemplateExpression */:
return visitNode(cbNode, node.tag) ||
visitNode(cbNode, node.template);
case 182 /* TypeAssertionExpression */:
return visitNode(cbNode, node.type) ||
visitNode(cbNode, node.expression);
case 183 /* ParenthesizedExpression */:
return visitNode(cbNode, node.expression);
case 186 /* DeleteExpression */:
return visitNode(cbNode, node.expression);
case 187 /* TypeOfExpression */:
return visitNode(cbNode, node.expression);
case 188 /* VoidExpression */:
return visitNode(cbNode, node.expression);
case 190 /* PrefixUnaryExpression */:
return visitNode(cbNode, node.operand);
case 195 /* YieldExpression */:
return visitNode(cbNode, node.asteriskToken) ||
visitNode(cbNode, node.expression);
case 189 /* AwaitExpression */:
return visitNode(cbNode, node.expression);
case 191 /* PostfixUnaryExpression */:
return visitNode(cbNode, node.operand);
case 192 /* BinaryExpression */:
return visitNode(cbNode, node.left) ||
visitNode(cbNode, node.operatorToken) ||
visitNode(cbNode, node.right);
case 200 /* AsExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.type);
case 201 /* NonNullExpression */:
return visitNode(cbNode, node.expression);
case 193 /* ConditionalExpression */:
return visitNode(cbNode, node.condition) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.whenTrue) ||
visitNode(cbNode, node.colonToken) ||
visitNode(cbNode, node.whenFalse);
case 196 /* SpreadElement */:
return visitNode(cbNode, node.expression);
case 204 /* Block */:
case 231 /* ModuleBlock */:
return visitNodes(cbNodes, node.statements);
case 261 /* SourceFile */:
return visitNodes(cbNodes, node.statements) ||
visitNode(cbNode, node.endOfFileToken);
case 205 /* VariableStatement */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.declarationList);
case 224 /* VariableDeclarationList */:
return visitNodes(cbNodes, node.declarations);
case 207 /* ExpressionStatement */:
return visitNode(cbNode, node.expression);
case 208 /* IfStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.thenStatement) ||
visitNode(cbNode, node.elseStatement);
case 209 /* DoStatement */:
return visitNode(cbNode, node.statement) ||
visitNode(cbNode, node.expression);
case 210 /* WhileStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 211 /* ForStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.condition) ||
visitNode(cbNode, node.incrementor) ||
visitNode(cbNode, node.statement);
case 212 /* ForInStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 213 /* ForOfStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 214 /* ContinueStatement */:
case 215 /* BreakStatement */:
return visitNode(cbNode, node.label);
case 216 /* ReturnStatement */:
return visitNode(cbNode, node.expression);
case 217 /* WithStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 218 /* SwitchStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.caseBlock);
case 232 /* CaseBlock */:
return visitNodes(cbNodes, node.clauses);
case 253 /* CaseClause */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.statements);
case 254 /* DefaultClause */:
return visitNodes(cbNodes, node.statements);
case 219 /* LabeledStatement */:
return visitNode(cbNode, node.label) ||
visitNode(cbNode, node.statement);
case 220 /* ThrowStatement */:
return visitNode(cbNode, node.expression);
case 221 /* TryStatement */:
return visitNode(cbNode, node.tryBlock) ||
visitNode(cbNode, node.catchClause) ||
visitNode(cbNode, node.finallyBlock);
case 256 /* CatchClause */:
return visitNode(cbNode, node.variableDeclaration) ||
visitNode(cbNode, node.block);
case 145 /* Decorator */:
return visitNode(cbNode, node.expression);
case 226 /* ClassDeclaration */:
case 197 /* ClassExpression */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.heritageClauses) ||
visitNodes(cbNodes, node.members);
case 227 /* InterfaceDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.heritageClauses) ||
visitNodes(cbNodes, node.members);
case 228 /* TypeAliasDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNode(cbNode, node.type);
case 229 /* EnumDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.members);
case 260 /* EnumMember */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.initializer);
case 230 /* ModuleDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.body);
case 234 /* ImportEqualsDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.moduleReference);
case 235 /* ImportDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.importClause) ||
visitNode(cbNode, node.moduleSpecifier);
case 236 /* ImportClause */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.namedBindings);
case 233 /* NamespaceExportDeclaration */:
return visitNode(cbNode, node.name);
case 237 /* NamespaceImport */:
return visitNode(cbNode, node.name);
case 238 /* NamedImports */:
case 242 /* NamedExports */:
return visitNodes(cbNodes, node.elements);
case 241 /* ExportDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.exportClause) ||
visitNode(cbNode, node.moduleSpecifier);
case 239 /* ImportSpecifier */:
case 243 /* ExportSpecifier */:
return visitNode(cbNode, node.propertyName) ||
visitNode(cbNode, node.name);
case 240 /* ExportAssignment */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.expression);
case 194 /* TemplateExpression */:
return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans);
case 202 /* TemplateSpan */:
return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal);
case 142 /* ComputedPropertyName */:
return visitNode(cbNode, node.expression);
case 255 /* HeritageClause */:
return visitNodes(cbNodes, node.types);
case 199 /* ExpressionWithTypeArguments */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.typeArguments);
case 245 /* ExternalModuleReference */:
return visitNode(cbNode, node.expression);
case 244 /* MissingDeclaration */:
return visitNodes(cbNodes, node.decorators);
case 246 /* JsxElement */:
return visitNode(cbNode, node.openingElement) ||
visitNodes(cbNodes, node.children) ||
visitNode(cbNode, node.closingElement);
case 247 /* JsxSelfClosingElement */:
case 248 /* JsxOpeningElement */:
return visitNode(cbNode, node.tagName) ||
visitNodes(cbNodes, node.attributes);
case 250 /* JsxAttribute */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.initializer);
case 251 /* JsxSpreadAttribute */:
return visitNode(cbNode, node.expression);
case 252 /* JsxExpression */:
return visitNode(cbNode, node.expression);
case 249 /* JsxClosingElement */:
return visitNode(cbNode, node.tagName);
case 262 /* JSDocTypeExpression */:
return visitNode(cbNode, node.type);
case 266 /* JSDocUnionType */:
return visitNodes(cbNodes, node.types);
case 267 /* JSDocTupleType */:
return visitNodes(cbNodes, node.types);
case 265 /* JSDocArrayType */:
return visitNode(cbNode, node.elementType);
case 269 /* JSDocNonNullableType */:
return visitNode(cbNode, node.type);
case 268 /* JSDocNullableType */:
return visitNode(cbNode, node.type);
case 270 /* JSDocRecordType */:
return visitNode(cbNode, node.literal);
case 272 /* JSDocTypeReference */:
return visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeArguments);
case 273 /* JSDocOptionalType */:
return visitNode(cbNode, node.type);
case 274 /* JSDocFunctionType */:
return visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type);
case 275 /* JSDocVariadicType */:
return visitNode(cbNode, node.type);
case 276 /* JSDocConstructorType */:
return visitNode(cbNode, node.type);
case 277 /* JSDocThisType */:
return visitNode(cbNode, node.type);
case 271 /* JSDocRecordMember */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.type);
case 278 /* JSDocComment */:
return visitNodes(cbNodes, node.tags);
case 281 /* JSDocParameterTag */:
return visitNode(cbNode, node.preParameterName) ||
visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.postParameterName);
case 282 /* JSDocReturnTag */:
return visitNode(cbNode, node.typeExpression);
case 283 /* JSDocTypeTag */:
return visitNode(cbNode, node.typeExpression);
case 280 /* JSDocAugmentsTag */:
return visitNode(cbNode, node.typeExpression);
case 284 /* JSDocTemplateTag */:
return visitNodes(cbNodes, node.typeParameters);
case 285 /* JSDocTypedefTag */:
return visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.fullName) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.jsDocTypeLiteral);
case 287 /* JSDocTypeLiteral */:
return visitNodes(cbNodes, node.jsDocPropertyTags);
case 286 /* JSDocPropertyTag */:
return visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.name);
case 294 /* PartiallyEmittedExpression */:
return visitNode(cbNode, node.expression);
case 288 /* JSDocLiteralType */:
return visitNode(cbNode, node.literal);
}
}
(node, cbNode, cbNodeArray) {
if (!node) {
return;
}
// The visitXXX functions could be written as local functions that close over the cbNode and cbNodeArray
// callback parameters, but that causes a closure allocation for each invocation with noticeable effects
// on performance.
var visitNodes = cbNodeArray ? visitNodeArray : visitEachNode;
var cbNodes = cbNodeArray || cbNode;
switch (node.kind) {
case 141 /* QualifiedName */:
return visitNode(cbNode, node.left) ||
visitNode(cbNode, node.right);
case 143 /* TypeParameter */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.constraint) ||
visitNode(cbNode, node.expression);
case 258 /* ShorthandPropertyAssignment */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.equalsToken) ||
visitNode(cbNode, node.objectAssignmentInitializer);
case 259 /* SpreadAssignment */:
return visitNode(cbNode, node.expression);
case 144 /* Parameter */:
case 147 /* PropertyDeclaration */:
case 146 /* PropertySignature */:
case 257 /* PropertyAssignment */:
case 223 /* VariableDeclaration */:
case 174 /* BindingElement */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.propertyName) ||
visitNode(cbNode, node.dotDotDotToken) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.type) ||
visitNode(cbNode, node.initializer);
case 158 /* FunctionType */:
case 159 /* ConstructorType */:
case 153 /* CallSignature */:
case 154 /* ConstructSignature */:
case 155 /* IndexSignature */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type);
case 149 /* MethodDeclaration */:
case 148 /* MethodSignature */:
case 150 /* Constructor */:
case 151 /* GetAccessor */:
case 152 /* SetAccessor */:
case 184 /* FunctionExpression */:
case 225 /* FunctionDeclaration */:
case 185 /* ArrowFunction */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.asteriskToken) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type) ||
visitNode(cbNode, node.equalsGreaterThanToken) ||
visitNode(cbNode, node.body);
case 157 /* TypeReference */:
return visitNode(cbNode, node.typeName) ||
visitNodes(cbNodes, node.typeArguments);
case 156 /* TypePredicate */:
return visitNode(cbNode, node.parameterName) ||
visitNode(cbNode, node.type);
case 160 /* TypeQuery */:
return visitNode(cbNode, node.exprName);
case 161 /* TypeLiteral */:
return visitNodes(cbNodes, node.members);
case 162 /* ArrayType */:
return visitNode(cbNode, node.elementType);
case 163 /* TupleType */:
return visitNodes(cbNodes, node.elementTypes);
case 164 /* UnionType */:
case 165 /* IntersectionType */:
return visitNodes(cbNodes, node.types);
case 166 /* ParenthesizedType */:
case 168 /* TypeOperator */:
return visitNode(cbNode, node.type);
case 169 /* IndexedAccessType */:
return visitNode(cbNode, node.objectType) ||
visitNode(cbNode, node.indexType);
case 170 /* MappedType */:
return visitNode(cbNode, node.readonlyToken) ||
visitNode(cbNode, node.typeParameter) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.type);
case 171 /* LiteralType */:
return visitNode(cbNode, node.literal);
case 172 /* ObjectBindingPattern */:
case 173 /* ArrayBindingPattern */:
return visitNodes(cbNodes, node.elements);
case 175 /* ArrayLiteralExpression */:
return visitNodes(cbNodes, node.elements);
case 176 /* ObjectLiteralExpression */:
return visitNodes(cbNodes, node.properties);
case 177 /* PropertyAccessExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.name);
case 178 /* ElementAccessExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.argumentExpression);
case 179 /* CallExpression */:
case 180 /* NewExpression */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.typeArguments) ||
visitNodes(cbNodes, node.arguments);
case 181 /* TaggedTemplateExpression */:
return visitNode(cbNode, node.tag) ||
visitNode(cbNode, node.template);
case 182 /* TypeAssertionExpression */:
return visitNode(cbNode, node.type) ||
visitNode(cbNode, node.expression);
case 183 /* ParenthesizedExpression */:
return visitNode(cbNode, node.expression);
case 186 /* DeleteExpression */:
return visitNode(cbNode, node.expression);
case 187 /* TypeOfExpression */:
return visitNode(cbNode, node.expression);
case 188 /* VoidExpression */:
return visitNode(cbNode, node.expression);
case 190 /* PrefixUnaryExpression */:
return visitNode(cbNode, node.operand);
case 195 /* YieldExpression */:
return visitNode(cbNode, node.asteriskToken) ||
visitNode(cbNode, node.expression);
case 189 /* AwaitExpression */:
return visitNode(cbNode, node.expression);
case 191 /* PostfixUnaryExpression */:
return visitNode(cbNode, node.operand);
case 192 /* BinaryExpression */:
return visitNode(cbNode, node.left) ||
visitNode(cbNode, node.operatorToken) ||
visitNode(cbNode, node.right);
case 200 /* AsExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.type);
case 201 /* NonNullExpression */:
return visitNode(cbNode, node.expression);
case 193 /* ConditionalExpression */:
return visitNode(cbNode, node.condition) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.whenTrue) ||
visitNode(cbNode, node.colonToken) ||
visitNode(cbNode, node.whenFalse);
case 196 /* SpreadElement */:
return visitNode(cbNode, node.expression);
case 204 /* Block */:
case 231 /* ModuleBlock */:
return visitNodes(cbNodes, node.statements);
case 261 /* SourceFile */:
return visitNodes(cbNodes, node.statements) ||
visitNode(cbNode, node.endOfFileToken);
case 205 /* VariableStatement */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.declarationList);
case 224 /* VariableDeclarationList */:
return visitNodes(cbNodes, node.declarations);
case 207 /* ExpressionStatement */:
return visitNode(cbNode, node.expression);
case 208 /* IfStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.thenStatement) ||
visitNode(cbNode, node.elseStatement);
case 209 /* DoStatement */:
return visitNode(cbNode, node.statement) ||
visitNode(cbNode, node.expression);
case 210 /* WhileStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 211 /* ForStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.condition) ||
visitNode(cbNode, node.incrementor) ||
visitNode(cbNode, node.statement);
case 212 /* ForInStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 213 /* ForOfStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 214 /* ContinueStatement */:
case 215 /* BreakStatement */:
return visitNode(cbNode, node.label);
case 216 /* ReturnStatement */:
return visitNode(cbNode, node.expression);
case 217 /* WithStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 218 /* SwitchStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.caseBlock);
case 232 /* CaseBlock */:
return visitNodes(cbNodes, node.clauses);
case 253 /* CaseClause */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.statements);
case 254 /* DefaultClause */:
return visitNodes(cbNodes, node.statements);
case 219 /* LabeledStatement */:
return visitNode(cbNode, node.label) ||
visitNode(cbNode, node.statement);
case 220 /* ThrowStatement */:
return visitNode(cbNode, node.expression);
case 221 /* TryStatement */:
return visitNode(cbNode, node.tryBlock) ||
visitNode(cbNode, node.catchClause) ||
visitNode(cbNode, node.finallyBlock);
case 256 /* CatchClause */:
return visitNode(cbNode, node.variableDeclaration) ||
visitNode(cbNode, node.block);
case 145 /* Decorator */:
return visitNode(cbNode, node.expression);
case 226 /* ClassDeclaration */:
case 197 /* ClassExpression */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.heritageClauses) ||
visitNodes(cbNodes, node.members);
case 227 /* InterfaceDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.heritageClauses) ||
visitNodes(cbNodes, node.members);
case 228 /* TypeAliasDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNode(cbNode, node.type);
case 229 /* EnumDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.members);
case 260 /* EnumMember */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.initializer);
case 230 /* ModuleDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.body);
case 234 /* ImportEqualsDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.moduleReference);
case 235 /* ImportDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.importClause) ||
visitNode(cbNode, node.moduleSpecifier);
case 236 /* ImportClause */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.namedBindings);
case 233 /* NamespaceExportDeclaration */:
return visitNode(cbNode, node.name);
case 237 /* NamespaceImport */:
return visitNode(cbNode, node.name);
case 238 /* NamedImports */:
case 242 /* NamedExports */:
return visitNodes(cbNodes, node.elements);
case 241 /* ExportDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.exportClause) ||
visitNode(cbNode, node.moduleSpecifier);
case 239 /* ImportSpecifier */:
case 243 /* ExportSpecifier */:
return visitNode(cbNode, node.propertyName) ||
visitNode(cbNode, node.name);
case 240 /* ExportAssignment */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.expression);
case 194 /* TemplateExpression */:
return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans);
case 202 /* TemplateSpan */:
return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal);
case 142 /* ComputedPropertyName */:
return visitNode(cbNode, node.expression);
case 255 /* HeritageClause */:
return visitNodes(cbNodes, node.types);
case 199 /* ExpressionWithTypeArguments */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.typeArguments);
case 245 /* ExternalModuleReference */:
return visitNode(cbNode, node.expression);
case 244 /* MissingDeclaration */:
return visitNodes(cbNodes, node.decorators);
case 246 /* JsxElement */:
return visitNode(cbNode, node.openingElement) ||
visitNodes(cbNodes, node.children) ||
visitNode(cbNode, node.closingElement);
case 247 /* JsxSelfClosingElement */:
case 248 /* JsxOpeningElement */:
return visitNode(cbNode, node.tagName) ||
visitNodes(cbNodes, node.attributes);
case 250 /* JsxAttribute */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.initializer);
case 251 /* JsxSpreadAttribute */:
return visitNode(cbNode, node.expression);
case 252 /* JsxExpression */:
return visitNode(cbNode, node.expression);
case 249 /* JsxClosingElement */:
return visitNode(cbNode, node.tagName);
case 262 /* JSDocTypeExpression */:
return visitNode(cbNode, node.type);
case 266 /* JSDocUnionType */:
return visitNodes(cbNodes, node.types);
case 267 /* JSDocTupleType */:
return visitNodes(cbNodes, node.types);
case 265 /* JSDocArrayType */:
return visitNode(cbNode, node.elementType);
case 269 /* JSDocNonNullableType */:
return visitNode(cbNode, node.type);
case 268 /* JSDocNullableType */:
return visitNode(cbNode, node.type);
case 270 /* JSDocRecordType */:
return visitNode(cbNode, node.literal);
case 272 /* JSDocTypeReference */:
return visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeArguments);
case 273 /* JSDocOptionalType */:
return visitNode(cbNode, node.type);
case 274 /* JSDocFunctionType */:
return visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type);
case 275 /* JSDocVariadicType */:
return visitNode(cbNode, node.type);
case 276 /* JSDocConstructorType */:
return visitNode(cbNode, node.type);
case 277 /* JSDocThisType */:
return visitNode(cbNode, node.type);
case 271 /* JSDocRecordMember */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.type);
case 278 /* JSDocComment */:
return visitNodes(cbNodes, node.tags);
case 281 /* JSDocParameterTag */:
return visitNode(cbNode, node.preParameterName) ||
visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.postParameterName);
case 282 /* JSDocReturnTag */:
return visitNode(cbNode, node.typeExpression);
case 283 /* JSDocTypeTag */:
return visitNode(cbNode, node.typeExpression);
case 280 /* JSDocAugmentsTag */:
return visitNode(cbNode, node.typeExpression);
case 284 /* JSDocTemplateTag */:
return visitNodes(cbNodes, node.typeParameters);
case 285 /* JSDocTypedefTag */:
return visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.fullName) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.jsDocTypeLiteral);
case 287 /* JSDocTypeLiteral */:
return visitNodes(cbNodes, node.jsDocPropertyTags);
case 286 /* JSDocPropertyTag */:
return visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.name);
case 294 /* PartiallyEmittedExpression */:
return visitNode(cbNode, node.expression);
case 288 /* JSDocLiteralType */:
return visitNode(cbNode, node.literal);
}
}
(node, cbNode, cbNodeArray) {
if (!node) {
return;
}
// The visitXXX functions could be written as local functions that close over the cbNode and cbNodeArray
// callback parameters, but that causes a closure allocation for each invocation with noticeable effects
// on performance.
var visitNodes = cbNodeArray ? visitNodeArray : visitEachNode;
var cbNodes = cbNodeArray || cbNode;
switch (node.kind) {
case 141 /* QualifiedName */:
return visitNode(cbNode, node.left) ||
visitNode(cbNode, node.right);
case 143 /* TypeParameter */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.constraint) ||
visitNode(cbNode, node.expression);
case 258 /* ShorthandPropertyAssignment */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.equalsToken) ||
visitNode(cbNode, node.objectAssignmentInitializer);
case 259 /* SpreadAssignment */:
return visitNode(cbNode, node.expression);
case 144 /* Parameter */:
case 147 /* PropertyDeclaration */:
case 146 /* PropertySignature */:
case 257 /* PropertyAssignment */:
case 223 /* VariableDeclaration */:
case 174 /* BindingElement */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.propertyName) ||
visitNode(cbNode, node.dotDotDotToken) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.type) ||
visitNode(cbNode, node.initializer);
case 158 /* FunctionType */:
case 159 /* ConstructorType */:
case 153 /* CallSignature */:
case 154 /* ConstructSignature */:
case 155 /* IndexSignature */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type);
case 149 /* MethodDeclaration */:
case 148 /* MethodSignature */:
case 150 /* Constructor */:
case 151 /* GetAccessor */:
case 152 /* SetAccessor */:
case 184 /* FunctionExpression */:
case 225 /* FunctionDeclaration */:
case 185 /* ArrowFunction */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.asteriskToken) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type) ||
visitNode(cbNode, node.equalsGreaterThanToken) ||
visitNode(cbNode, node.body);
case 157 /* TypeReference */:
return visitNode(cbNode, node.typeName) ||
visitNodes(cbNodes, node.typeArguments);
case 156 /* TypePredicate */:
return visitNode(cbNode, node.parameterName) ||
visitNode(cbNode, node.type);
case 160 /* TypeQuery */:
return visitNode(cbNode, node.exprName);
case 161 /* TypeLiteral */:
return visitNodes(cbNodes, node.members);
case 162 /* ArrayType */:
return visitNode(cbNode, node.elementType);
case 163 /* TupleType */:
return visitNodes(cbNodes, node.elementTypes);
case 164 /* UnionType */:
case 165 /* IntersectionType */:
return visitNodes(cbNodes, node.types);
case 166 /* ParenthesizedType */:
case 168 /* TypeOperator */:
return visitNode(cbNode, node.type);
case 169 /* IndexedAccessType */:
return visitNode(cbNode, node.objectType) ||
visitNode(cbNode, node.indexType);
case 170 /* MappedType */:
return visitNode(cbNode, node.readonlyToken) ||
visitNode(cbNode, node.typeParameter) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.type);
case 171 /* LiteralType */:
return visitNode(cbNode, node.literal);
case 172 /* ObjectBindingPattern */:
case 173 /* ArrayBindingPattern */:
return visitNodes(cbNodes, node.elements);
case 175 /* ArrayLiteralExpression */:
return visitNodes(cbNodes, node.elements);
case 176 /* ObjectLiteralExpression */:
return visitNodes(cbNodes, node.properties);
case 177 /* PropertyAccessExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.name);
case 178 /* ElementAccessExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.argumentExpression);
case 179 /* CallExpression */:
case 180 /* NewExpression */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.typeArguments) ||
visitNodes(cbNodes, node.arguments);
case 181 /* TaggedTemplateExpression */:
return visitNode(cbNode, node.tag) ||
visitNode(cbNode, node.template);
case 182 /* TypeAssertionExpression */:
return visitNode(cbNode, node.type) ||
visitNode(cbNode, node.expression);
case 183 /* ParenthesizedExpression */:
return visitNode(cbNode, node.expression);
case 186 /* DeleteExpression */:
return visitNode(cbNode, node.expression);
case 187 /* TypeOfExpression */:
return visitNode(cbNode, node.expression);
case 188 /* VoidExpression */:
return visitNode(cbNode, node.expression);
case 190 /* PrefixUnaryExpression */:
return visitNode(cbNode, node.operand);
case 195 /* YieldExpression */:
return visitNode(cbNode, node.asteriskToken) ||
visitNode(cbNode, node.expression);
case 189 /* AwaitExpression */:
return visitNode(cbNode, node.expression);
case 191 /* PostfixUnaryExpression */:
return visitNode(cbNode, node.operand);
case 192 /* BinaryExpression */:
return visitNode(cbNode, node.left) ||
visitNode(cbNode, node.operatorToken) ||
visitNode(cbNode, node.right);
case 200 /* AsExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.type);
case 201 /* NonNullExpression */:
return visitNode(cbNode, node.expression);
case 193 /* ConditionalExpression */:
return visitNode(cbNode, node.condition) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.whenTrue) ||
visitNode(cbNode, node.colonToken) ||
visitNode(cbNode, node.whenFalse);
case 196 /* SpreadElement */:
return visitNode(cbNode, node.expression);
case 204 /* Block */:
case 231 /* ModuleBlock */:
return visitNodes(cbNodes, node.statements);
case 261 /* SourceFile */:
return visitNodes(cbNodes, node.statements) ||
visitNode(cbNode, node.endOfFileToken);
case 205 /* VariableStatement */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.declarationList);
case 224 /* VariableDeclarationList */:
return visitNodes(cbNodes, node.declarations);
case 207 /* ExpressionStatement */:
return visitNode(cbNode, node.expression);
case 208 /* IfStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.thenStatement) ||
visitNode(cbNode, node.elseStatement);
case 209 /* DoStatement */:
return visitNode(cbNode, node.statement) ||
visitNode(cbNode, node.expression);
case 210 /* WhileStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 211 /* ForStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.condition) ||
visitNode(cbNode, node.incrementor) ||
visitNode(cbNode, node.statement);
case 212 /* ForInStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 213 /* ForOfStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 214 /* ContinueStatement */:
case 215 /* BreakStatement */:
return visitNode(cbNode, node.label);
case 216 /* ReturnStatement */:
return visitNode(cbNode, node.expression);
case 217 /* WithStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 218 /* SwitchStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.caseBlock);
case 232 /* CaseBlock */:
return visitNodes(cbNodes, node.clauses);
case 253 /* CaseClause */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.statements);
case 254 /* DefaultClause */:
return visitNodes(cbNodes, node.statements);
case 219 /* LabeledStatement */:
return visitNode(cbNode, node.label) ||
visitNode(cbNode, node.statement);
case 220 /* ThrowStatement */:
return visitNode(cbNode, node.expression);
case 221 /* TryStatement */:
return visitNode(cbNode, node.tryBlock) ||
visitNode(cbNode, node.catchClause) ||
visitNode(cbNode, node.finallyBlock);
case 256 /* CatchClause */:
return visitNode(cbNode, node.variableDeclaration) ||
visitNode(cbNode, node.block);
case 145 /* Decorator */:
return visitNode(cbNode, node.expression);
case 226 /* ClassDeclaration */:
case 197 /* ClassExpression */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.heritageClauses) ||
visitNodes(cbNodes, node.members);
case 227 /* InterfaceDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.heritageClauses) ||
visitNodes(cbNodes, node.members);
case 228 /* TypeAliasDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNode(cbNode, node.type);
case 229 /* EnumDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.members);
case 260 /* EnumMember */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.initializer);
case 230 /* ModuleDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.body);
case 234 /* ImportEqualsDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.moduleReference);
case 235 /* ImportDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.importClause) ||
visitNode(cbNode, node.moduleSpecifier);
case 236 /* ImportClause */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.namedBindings);
case 233 /* NamespaceExportDeclaration */:
return visitNode(cbNode, node.name);
case 237 /* NamespaceImport */:
return visitNode(cbNode, node.name);
case 238 /* NamedImports */:
case 242 /* NamedExports */:
return visitNodes(cbNodes, node.elements);
case 241 /* ExportDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.exportClause) ||
visitNode(cbNode, node.moduleSpecifier);
case 239 /* ImportSpecifier */:
case 243 /* ExportSpecifier */:
return visitNode(cbNode, node.propertyName) ||
visitNode(cbNode, node.name);
case 240 /* ExportAssignment */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.expression);
case 194 /* TemplateExpression */:
return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans);
case 202 /* TemplateSpan */:
return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal);
case 142 /* ComputedPropertyName */:
return visitNode(cbNode, node.expression);
case 255 /* HeritageClause */:
return visitNodes(cbNodes, node.types);
case 199 /* ExpressionWithTypeArguments */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.typeArguments);
case 245 /* ExternalModuleReference */:
return visitNode(cbNode, node.expression);
case 244 /* MissingDeclaration */:
return visitNodes(cbNodes, node.decorators);
case 246 /* JsxElement */:
return visitNode(cbNode, node.openingElement) ||
visitNodes(cbNodes, node.children) ||
visitNode(cbNode, node.closingElement);
case 247 /* JsxSelfClosingElement */:
case 248 /* JsxOpeningElement */:
return visitNode(cbNode, node.tagName) ||
visitNodes(cbNodes, node.attributes);
case 250 /* JsxAttribute */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.initializer);
case 251 /* JsxSpreadAttribute */:
return visitNode(cbNode, node.expression);
case 252 /* JsxExpression */:
return visitNode(cbNode, node.expression);
case 249 /* JsxClosingElement */:
return visitNode(cbNode, node.tagName);
case 262 /* JSDocTypeExpression */:
return visitNode(cbNode, node.type);
case 266 /* JSDocUnionType */:
return visitNodes(cbNodes, node.types);
case 267 /* JSDocTupleType */:
return visitNodes(cbNodes, node.types);
case 265 /* JSDocArrayType */:
return visitNode(cbNode, node.elementType);
case 269 /* JSDocNonNullableType */:
return visitNode(cbNode, node.type);
case 268 /* JSDocNullableType */:
return visitNode(cbNode, node.type);
case 270 /* JSDocRecordType */:
return visitNode(cbNode, node.literal);
case 272 /* JSDocTypeReference */:
return visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeArguments);
case 273 /* JSDocOptionalType */:
return visitNode(cbNode, node.type);
case 274 /* JSDocFunctionType */:
return visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type);
case 275 /* JSDocVariadicType */:
return visitNode(cbNode, node.type);
case 276 /* JSDocConstructorType */:
return visitNode(cbNode, node.type);
case 277 /* JSDocThisType */:
return visitNode(cbNode, node.type);
case 271 /* JSDocRecordMember */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.type);
case 278 /* JSDocComment */:
return visitNodes(cbNodes, node.tags);
case 281 /* JSDocParameterTag */:
return visitNode(cbNode, node.preParameterName) ||
visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.postParameterName);
case 282 /* JSDocReturnTag */:
return visitNode(cbNode, node.typeExpression);
case 283 /* JSDocTypeTag */:
return visitNode(cbNode, node.typeExpression);
case 280 /* JSDocAugmentsTag */:
return visitNode(cbNode, node.typeExpression);
case 284 /* JSDocTemplateTag */:
return visitNodes(cbNodes, node.typeParameters);
case 285 /* JSDocTypedefTag */:
return visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.fullName) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.jsDocTypeLiteral);
case 287 /* JSDocTypeLiteral */:
return visitNodes(cbNodes, node.jsDocPropertyTags);
case 286 /* JSDocPropertyTag */:
return visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.name);
case 294 /* PartiallyEmittedExpression */:
return visitNode(cbNode, node.expression);
case 288 /* JSDocLiteralType */:
return visitNode(cbNode, node.literal);
}
}
(node, cbNode, cbNodeArray) {
if (!node) {
return;
}
// The visitXXX functions could be written as local functions that close over the cbNode and cbNodeArray
// callback parameters, but that causes a closure allocation for each invocation with noticeable effects
// on performance.
var visitNodes = cbNodeArray ? visitNodeArray : visitEachNode;
var cbNodes = cbNodeArray || cbNode;
switch (node.kind) {
case 141 /* QualifiedName */:
return visitNode(cbNode, node.left) ||
visitNode(cbNode, node.right);
case 143 /* TypeParameter */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.constraint) ||
visitNode(cbNode, node.expression);
case 258 /* ShorthandPropertyAssignment */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.equalsToken) ||
visitNode(cbNode, node.objectAssignmentInitializer);
case 259 /* SpreadAssignment */:
return visitNode(cbNode, node.expression);
case 144 /* Parameter */:
case 147 /* PropertyDeclaration */:
case 146 /* PropertySignature */:
case 257 /* PropertyAssignment */:
case 223 /* VariableDeclaration */:
case 174 /* BindingElement */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.propertyName) ||
visitNode(cbNode, node.dotDotDotToken) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.type) ||
visitNode(cbNode, node.initializer);
case 158 /* FunctionType */:
case 159 /* ConstructorType */:
case 153 /* CallSignature */:
case 154 /* ConstructSignature */:
case 155 /* IndexSignature */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type);
case 149 /* MethodDeclaration */:
case 148 /* MethodSignature */:
case 150 /* Constructor */:
case 151 /* GetAccessor */:
case 152 /* SetAccessor */:
case 184 /* FunctionExpression */:
case 225 /* FunctionDeclaration */:
case 185 /* ArrowFunction */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.asteriskToken) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type) ||
visitNode(cbNode, node.equalsGreaterThanToken) ||
visitNode(cbNode, node.body);
case 157 /* TypeReference */:
return visitNode(cbNode, node.typeName) ||
visitNodes(cbNodes, node.typeArguments);
case 156 /* TypePredicate */:
return visitNode(cbNode, node.parameterName) ||
visitNode(cbNode, node.type);
case 160 /* TypeQuery */:
return visitNode(cbNode, node.exprName);
case 161 /* TypeLiteral */:
return visitNodes(cbNodes, node.members);
case 162 /* ArrayType */:
return visitNode(cbNode, node.elementType);
case 163 /* TupleType */:
return visitNodes(cbNodes, node.elementTypes);
case 164 /* UnionType */:
case 165 /* IntersectionType */:
return visitNodes(cbNodes, node.types);
case 166 /* ParenthesizedType */:
case 168 /* TypeOperator */:
return visitNode(cbNode, node.type);
case 169 /* IndexedAccessType */:
return visitNode(cbNode, node.objectType) ||
visitNode(cbNode, node.indexType);
case 170 /* MappedType */:
return visitNode(cbNode, node.readonlyToken) ||
visitNode(cbNode, node.typeParameter) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.type);
case 171 /* LiteralType */:
return visitNode(cbNode, node.literal);
case 172 /* ObjectBindingPattern */:
case 173 /* ArrayBindingPattern */:
return visitNodes(cbNodes, node.elements);
case 175 /* ArrayLiteralExpression */:
return visitNodes(cbNodes, node.elements);
case 176 /* ObjectLiteralExpression */:
return visitNodes(cbNodes, node.properties);
case 177 /* PropertyAccessExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.name);
case 178 /* ElementAccessExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.argumentExpression);
case 179 /* CallExpression */:
case 180 /* NewExpression */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.typeArguments) ||
visitNodes(cbNodes, node.arguments);
case 181 /* TaggedTemplateExpression */:
return visitNode(cbNode, node.tag) ||
visitNode(cbNode, node.template);
case 182 /* TypeAssertionExpression */:
return visitNode(cbNode, node.type) ||
visitNode(cbNode, node.expression);
case 183 /* ParenthesizedExpression */:
return visitNode(cbNode, node.expression);
case 186 /* DeleteExpression */:
return visitNode(cbNode, node.expression);
case 187 /* TypeOfExpression */:
return visitNode(cbNode, node.expression);
case 188 /* VoidExpression */:
return visitNode(cbNode, node.expression);
case 190 /* PrefixUnaryExpression */:
return visitNode(cbNode, node.operand);
case 195 /* YieldExpression */:
return visitNode(cbNode, node.asteriskToken) ||
visitNode(cbNode, node.expression);
case 189 /* AwaitExpression */:
return visitNode(cbNode, node.expression);
case 191 /* PostfixUnaryExpression */:
return visitNode(cbNode, node.operand);
case 192 /* BinaryExpression */:
return visitNode(cbNode, node.left) ||
visitNode(cbNode, node.operatorToken) ||
visitNode(cbNode, node.right);
case 200 /* AsExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.type);
case 201 /* NonNullExpression */:
return visitNode(cbNode, node.expression);
case 193 /* ConditionalExpression */:
return visitNode(cbNode, node.condition) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.whenTrue) ||
visitNode(cbNode, node.colonToken) ||
visitNode(cbNode, node.whenFalse);
case 196 /* SpreadElement */:
return visitNode(cbNode, node.expression);
case 204 /* Block */:
case 231 /* ModuleBlock */:
return visitNodes(cbNodes, node.statements);
case 261 /* SourceFile */:
return visitNodes(cbNodes, node.statements) ||
visitNode(cbNode, node.endOfFileToken);
case 205 /* VariableStatement */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.declarationList);
case 224 /* VariableDeclarationList */:
return visitNodes(cbNodes, node.declarations);
case 207 /* ExpressionStatement */:
return visitNode(cbNode, node.expression);
case 208 /* IfStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.thenStatement) ||
visitNode(cbNode, node.elseStatement);
case 209 /* DoStatement */:
return visitNode(cbNode, node.statement) ||
visitNode(cbNode, node.expression);
case 210 /* WhileStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 211 /* ForStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.condition) ||
visitNode(cbNode, node.incrementor) ||
visitNode(cbNode, node.statement);
case 212 /* ForInStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 213 /* ForOfStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 214 /* ContinueStatement */:
case 215 /* BreakStatement */:
return visitNode(cbNode, node.label);
case 216 /* ReturnStatement */:
return visitNode(cbNode, node.expression);
case 217 /* WithStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 218 /* SwitchStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.caseBlock);
case 232 /* CaseBlock */:
return visitNodes(cbNodes, node.clauses);
case 253 /* CaseClause */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.statements);
case 254 /* DefaultClause */:
return visitNodes(cbNodes, node.statements);
case 219 /* LabeledStatement */:
return visitNode(cbNode, node.label) ||
visitNode(cbNode, node.statement);
case 220 /* ThrowStatement */:
return visitNode(cbNode, node.expression);
case 221 /* TryStatement */:
return visitNode(cbNode, node.tryBlock) ||
visitNode(cbNode, node.catchClause) ||
visitNode(cbNode, node.finallyBlock);
case 256 /* CatchClause */:
return visitNode(cbNode, node.variableDeclaration) ||
visitNode(cbNode, node.block);
case 145 /* Decorator */:
return visitNode(cbNode, node.expression);
case 226 /* ClassDeclaration */:
case 197 /* ClassExpression */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.heritageClauses) ||
visitNodes(cbNodes, node.members);
case 227 /* InterfaceDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.heritageClauses) ||
visitNodes(cbNodes, node.members);
case 228 /* TypeAliasDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNode(cbNode, node.type);
case 229 /* EnumDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.members);
case 260 /* EnumMember */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.initializer);
case 230 /* ModuleDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.body);
case 234 /* ImportEqualsDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.moduleReference);
case 235 /* ImportDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.importClause) ||
visitNode(cbNode, node.moduleSpecifier);
case 236 /* ImportClause */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.namedBindings);
case 233 /* NamespaceExportDeclaration */:
return visitNode(cbNode, node.name);
case 237 /* NamespaceImport */:
return visitNode(cbNode, node.name);
case 238 /* NamedImports */:
case 242 /* NamedExports */:
return visitNodes(cbNodes, node.elements);
case 241 /* ExportDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.exportClause) ||
visitNode(cbNode, node.moduleSpecifier);
case 239 /* ImportSpecifier */:
case 243 /* ExportSpecifier */:
return visitNode(cbNode, node.propertyName) ||
visitNode(cbNode, node.name);
case 240 /* ExportAssignment */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.expression);
case 194 /* TemplateExpression */:
return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans);
case 202 /* TemplateSpan */:
return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal);
case 142 /* ComputedPropertyName */:
return visitNode(cbNode, node.expression);
case 255 /* HeritageClause */:
return visitNodes(cbNodes, node.types);
case 199 /* ExpressionWithTypeArguments */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.typeArguments);
case 245 /* ExternalModuleReference */:
return visitNode(cbNode, node.expression);
case 244 /* MissingDeclaration */:
return visitNodes(cbNodes, node.decorators);
case 246 /* JsxElement */:
return visitNode(cbNode, node.openingElement) ||
visitNodes(cbNodes, node.children) ||
visitNode(cbNode, node.closingElement);
case 247 /* JsxSelfClosingElement */:
case 248 /* JsxOpeningElement */:
return visitNode(cbNode, node.tagName) ||
visitNodes(cbNodes, node.attributes);
case 250 /* JsxAttribute */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.initializer);
case 251 /* JsxSpreadAttribute */:
return visitNode(cbNode, node.expression);
case 252 /* JsxExpression */:
return visitNode(cbNode, node.expression);
case 249 /* JsxClosingElement */:
return visitNode(cbNode, node.tagName);
case 262 /* JSDocTypeExpression */:
return visitNode(cbNode, node.type);
case 266 /* JSDocUnionType */:
return visitNodes(cbNodes, node.types);
case 267 /* JSDocTupleType */:
return visitNodes(cbNodes, node.types);
case 265 /* JSDocArrayType */:
return visitNode(cbNode, node.elementType);
case 269 /* JSDocNonNullableType */:
return visitNode(cbNode, node.type);
case 268 /* JSDocNullableType */:
return visitNode(cbNode, node.type);
case 270 /* JSDocRecordType */:
return visitNode(cbNode, node.literal);
case 272 /* JSDocTypeReference */:
return visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeArguments);
case 273 /* JSDocOptionalType */:
return visitNode(cbNode, node.type);
case 274 /* JSDocFunctionType */:
return visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type);
case 275 /* JSDocVariadicType */:
return visitNode(cbNode, node.type);
case 276 /* JSDocConstructorType */:
return visitNode(cbNode, node.type);
case 277 /* JSDocThisType */:
return visitNode(cbNode, node.type);
case 271 /* JSDocRecordMember */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.type);
case 278 /* JSDocComment */:
return visitNodes(cbNodes, node.tags);
case 281 /* JSDocParameterTag */:
return visitNode(cbNode, node.preParameterName) ||
visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.postParameterName);
case 282 /* JSDocReturnTag */:
return visitNode(cbNode, node.typeExpression);
case 283 /* JSDocTypeTag */:
return visitNode(cbNode, node.typeExpression);
case 280 /* JSDocAugmentsTag */:
return visitNode(cbNode, node.typeExpression);
case 284 /* JSDocTemplateTag */:
return visitNodes(cbNodes, node.typeParameters);
case 285 /* JSDocTypedefTag */:
return visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.fullName) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.jsDocTypeLiteral);
case 287 /* JSDocTypeLiteral */:
return visitNodes(cbNodes, node.jsDocPropertyTags);
case 286 /* JSDocPropertyTag */:
return visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.name);
case 294 /* PartiallyEmittedExpression */:
return visitNode(cbNode, node.expression);
case 288 /* JSDocLiteralType */:
return visitNode(cbNode, node.literal);
}
}
(node, cbNode, cbNodeArray) {
if (!node) {
return;
}
// The visitXXX functions could be written as local functions that close over the cbNode and cbNodeArray
// callback parameters, but that causes a closure allocation for each invocation with noticeable effects
// on performance.
var visitNodes = cbNodeArray ? visitNodeArray : visitEachNode;
var cbNodes = cbNodeArray || cbNode;
switch (node.kind) {
case 141 /* QualifiedName */:
return visitNode(cbNode, node.left) ||
visitNode(cbNode, node.right);
case 143 /* TypeParameter */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.constraint) ||
visitNode(cbNode, node.expression);
case 258 /* ShorthandPropertyAssignment */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.equalsToken) ||
visitNode(cbNode, node.objectAssignmentInitializer);
case 259 /* SpreadAssignment */:
return visitNode(cbNode, node.expression);
case 144 /* Parameter */:
case 147 /* PropertyDeclaration */:
case 146 /* PropertySignature */:
case 257 /* PropertyAssignment */:
case 223 /* VariableDeclaration */:
case 174 /* BindingElement */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.propertyName) ||
visitNode(cbNode, node.dotDotDotToken) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.type) ||
visitNode(cbNode, node.initializer);
case 158 /* FunctionType */:
case 159 /* ConstructorType */:
case 153 /* CallSignature */:
case 154 /* ConstructSignature */:
case 155 /* IndexSignature */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type);
case 149 /* MethodDeclaration */:
case 148 /* MethodSignature */:
case 150 /* Constructor */:
case 151 /* GetAccessor */:
case 152 /* SetAccessor */:
case 184 /* FunctionExpression */:
case 225 /* FunctionDeclaration */:
case 185 /* ArrowFunction */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.asteriskToken) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type) ||
visitNode(cbNode, node.equalsGreaterThanToken) ||
visitNode(cbNode, node.body);
case 157 /* TypeReference */:
return visitNode(cbNode, node.typeName) ||
visitNodes(cbNodes, node.typeArguments);
case 156 /* TypePredicate */:
return visitNode(cbNode, node.parameterName) ||
visitNode(cbNode, node.type);
case 160 /* TypeQuery */:
return visitNode(cbNode, node.exprName);
case 161 /* TypeLiteral */:
return visitNodes(cbNodes, node.members);
case 162 /* ArrayType */:
return visitNode(cbNode, node.elementType);
case 163 /* TupleType */:
return visitNodes(cbNodes, node.elementTypes);
case 164 /* UnionType */:
case 165 /* IntersectionType */:
return visitNodes(cbNodes, node.types);
case 166 /* ParenthesizedType */:
case 168 /* TypeOperator */:
return visitNode(cbNode, node.type);
case 169 /* IndexedAccessType */:
return visitNode(cbNode, node.objectType) ||
visitNode(cbNode, node.indexType);
case 170 /* MappedType */:
return visitNode(cbNode, node.readonlyToken) ||
visitNode(cbNode, node.typeParameter) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.type);
case 171 /* LiteralType */:
return visitNode(cbNode, node.literal);
case 172 /* ObjectBindingPattern */:
case 173 /* ArrayBindingPattern */:
return visitNodes(cbNodes, node.elements);
case 175 /* ArrayLiteralExpression */:
return visitNodes(cbNodes, node.elements);
case 176 /* ObjectLiteralExpression */:
return visitNodes(cbNodes, node.properties);
case 177 /* PropertyAccessExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.name);
case 178 /* ElementAccessExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.argumentExpression);
case 179 /* CallExpression */:
case 180 /* NewExpression */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.typeArguments) ||
visitNodes(cbNodes, node.arguments);
case 181 /* TaggedTemplateExpression */:
return visitNode(cbNode, node.tag) ||
visitNode(cbNode, node.template);
case 182 /* TypeAssertionExpression */:
return visitNode(cbNode, node.type) ||
visitNode(cbNode, node.expression);
case 183 /* ParenthesizedExpression */:
return visitNode(cbNode, node.expression);
case 186 /* DeleteExpression */:
return visitNode(cbNode, node.expression);
case 187 /* TypeOfExpression */:
return visitNode(cbNode, node.expression);
case 188 /* VoidExpression */:
return visitNode(cbNode, node.expression);
case 190 /* PrefixUnaryExpression */:
return visitNode(cbNode, node.operand);
case 195 /* YieldExpression */:
return visitNode(cbNode, node.asteriskToken) ||
visitNode(cbNode, node.expression);
case 189 /* AwaitExpression */:
return visitNode(cbNode, node.expression);
case 191 /* PostfixUnaryExpression */:
return visitNode(cbNode, node.operand);
case 192 /* BinaryExpression */:
return visitNode(cbNode, node.left) ||
visitNode(cbNode, node.operatorToken) ||
visitNode(cbNode, node.right);
case 200 /* AsExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.type);
case 201 /* NonNullExpression */:
return visitNode(cbNode, node.expression);
case 193 /* ConditionalExpression */:
return visitNode(cbNode, node.condition) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.whenTrue) ||
visitNode(cbNode, node.colonToken) ||
visitNode(cbNode, node.whenFalse);
case 196 /* SpreadElement */:
return visitNode(cbNode, node.expression);
case 204 /* Block */:
case 231 /* ModuleBlock */:
return visitNodes(cbNodes, node.statements);
case 261 /* SourceFile */:
return visitNodes(cbNodes, node.statements) ||
visitNode(cbNode, node.endOfFileToken);
case 205 /* VariableStatement */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.declarationList);
case 224 /* VariableDeclarationList */:
return visitNodes(cbNodes, node.declarations);
case 207 /* ExpressionStatement */:
return visitNode(cbNode, node.expression);
case 208 /* IfStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.thenStatement) ||
visitNode(cbNode, node.elseStatement);
case 209 /* DoStatement */:
return visitNode(cbNode, node.statement) ||
visitNode(cbNode, node.expression);
case 210 /* WhileStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 211 /* ForStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.condition) ||
visitNode(cbNode, node.incrementor) ||
visitNode(cbNode, node.statement);
case 212 /* ForInStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 213 /* ForOfStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 214 /* ContinueStatement */:
case 215 /* BreakStatement */:
return visitNode(cbNode, node.label);
case 216 /* ReturnStatement */:
return visitNode(cbNode, node.expression);
case 217 /* WithStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 218 /* SwitchStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.caseBlock);
case 232 /* CaseBlock */:
return visitNodes(cbNodes, node.clauses);
case 253 /* CaseClause */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.statements);
case 254 /* DefaultClause */:
return visitNodes(cbNodes, node.statements);
case 219 /* LabeledStatement */:
return visitNode(cbNode, node.label) ||
visitNode(cbNode, node.statement);
case 220 /* ThrowStatement */:
return visitNode(cbNode, node.expression);
case 221 /* TryStatement */:
return visitNode(cbNode, node.tryBlock) ||
visitNode(cbNode, node.catchClause) ||
visitNode(cbNode, node.finallyBlock);
case 256 /* CatchClause */:
return visitNode(cbNode, node.variableDeclaration) ||
visitNode(cbNode, node.block);
case 145 /* Decorator */:
return visitNode(cbNode, node.expression);
case 226 /* ClassDeclaration */:
case 197 /* ClassExpression */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.heritageClauses) ||
visitNodes(cbNodes, node.members);
case 227 /* InterfaceDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.heritageClauses) ||
visitNodes(cbNodes, node.members);
case 228 /* TypeAliasDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNode(cbNode, node.type);
case 229 /* EnumDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.members);
case 260 /* EnumMember */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.initializer);
case 230 /* ModuleDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.body);
case 234 /* ImportEqualsDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.moduleReference);
case 235 /* ImportDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.importClause) ||
visitNode(cbNode, node.moduleSpecifier);
case 236 /* ImportClause */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.namedBindings);
case 233 /* NamespaceExportDeclaration */:
return visitNode(cbNode, node.name);
case 237 /* NamespaceImport */:
return visitNode(cbNode, node.name);
case 238 /* NamedImports */:
case 242 /* NamedExports */:
return visitNodes(cbNodes, node.elements);
case 241 /* ExportDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.exportClause) ||
visitNode(cbNode, node.moduleSpecifier);
case 239 /* ImportSpecifier */:
case 243 /* ExportSpecifier */:
return visitNode(cbNode, node.propertyName) ||
visitNode(cbNode, node.name);
case 240 /* ExportAssignment */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.expression);
case 194 /* TemplateExpression */:
return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans);
case 202 /* TemplateSpan */:
return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal);
case 142 /* ComputedPropertyName */:
return visitNode(cbNode, node.expression);
case 255 /* HeritageClause */:
return visitNodes(cbNodes, node.types);
case 199 /* ExpressionWithTypeArguments */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.typeArguments);
case 245 /* ExternalModuleReference */:
return visitNode(cbNode, node.expression);
case 244 /* MissingDeclaration */:
return visitNodes(cbNodes, node.decorators);
case 246 /* JsxElement */:
return visitNode(cbNode, node.openingElement) ||
visitNodes(cbNodes, node.children) ||
visitNode(cbNode, node.closingElement);
case 247 /* JsxSelfClosingElement */:
case 248 /* JsxOpeningElement */:
return visitNode(cbNode, node.tagName) ||
visitNodes(cbNodes, node.attributes);
case 250 /* JsxAttribute */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.initializer);
case 251 /* JsxSpreadAttribute */:
return visitNode(cbNode, node.expression);
case 252 /* JsxExpression */:
return visitNode(cbNode, node.expression);
case 249 /* JsxClosingElement */:
return visitNode(cbNode, node.tagName);
case 262 /* JSDocTypeExpression */:
return visitNode(cbNode, node.type);
case 266 /* JSDocUnionType */:
return visitNodes(cbNodes, node.types);
case 267 /* JSDocTupleType */:
return visitNodes(cbNodes, node.types);
case 265 /* JSDocArrayType */:
return visitNode(cbNode, node.elementType);
case 269 /* JSDocNonNullableType */:
return visitNode(cbNode, node.type);
case 268 /* JSDocNullableType */:
return visitNode(cbNode, node.type);
case 270 /* JSDocRecordType */:
return visitNode(cbNode, node.literal);
case 272 /* JSDocTypeReference */:
return visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeArguments);
case 273 /* JSDocOptionalType */:
return visitNode(cbNode, node.type);
case 274 /* JSDocFunctionType */:
return visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type);
case 275 /* JSDocVariadicType */:
return visitNode(cbNode, node.type);
case 276 /* JSDocConstructorType */:
return visitNode(cbNode, node.type);
case 277 /* JSDocThisType */:
return visitNode(cbNode, node.type);
case 271 /* JSDocRecordMember */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.type);
case 278 /* JSDocComment */:
return visitNodes(cbNodes, node.tags);
case 281 /* JSDocParameterTag */:
return visitNode(cbNode, node.preParameterName) ||
visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.postParameterName);
case 282 /* JSDocReturnTag */:
return visitNode(cbNode, node.typeExpression);
case 283 /* JSDocTypeTag */:
return visitNode(cbNode, node.typeExpression);
case 280 /* JSDocAugmentsTag */:
return visitNode(cbNode, node.typeExpression);
case 284 /* JSDocTemplateTag */:
return visitNodes(cbNodes, node.typeParameters);
case 285 /* JSDocTypedefTag */:
return visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.fullName) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.jsDocTypeLiteral);
case 287 /* JSDocTypeLiteral */:
return visitNodes(cbNodes, node.jsDocPropertyTags);
case 286 /* JSDocPropertyTag */:
return visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.name);
case 294 /* PartiallyEmittedExpression */:
return visitNode(cbNode, node.expression);
case 288 /* JSDocLiteralType */:
return visitNode(cbNode, node.literal);
}
}
(node, cbNode, cbNodeArray) {
if (!node) {
return;
}
// The visitXXX functions could be written as local functions that close over the cbNode and cbNodeArray
// callback parameters, but that causes a closure allocation for each invocation with noticeable effects
// on performance.
var visitNodes = cbNodeArray ? visitNodeArray : visitEachNode;
var cbNodes = cbNodeArray || cbNode;
switch (node.kind) {
case 141 /* QualifiedName */:
return visitNode(cbNode, node.left) ||
visitNode(cbNode, node.right);
case 143 /* TypeParameter */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.constraint) ||
visitNode(cbNode, node.expression);
case 258 /* ShorthandPropertyAssignment */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.equalsToken) ||
visitNode(cbNode, node.objectAssignmentInitializer);
case 259 /* SpreadAssignment */:
return visitNode(cbNode, node.expression);
case 144 /* Parameter */:
case 147 /* PropertyDeclaration */:
case 146 /* PropertySignature */:
case 257 /* PropertyAssignment */:
case 223 /* VariableDeclaration */:
case 174 /* BindingElement */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.propertyName) ||
visitNode(cbNode, node.dotDotDotToken) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.type) ||
visitNode(cbNode, node.initializer);
case 158 /* FunctionType */:
case 159 /* ConstructorType */:
case 153 /* CallSignature */:
case 154 /* ConstructSignature */:
case 155 /* IndexSignature */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type);
case 149 /* MethodDeclaration */:
case 148 /* MethodSignature */:
case 150 /* Constructor */:
case 151 /* GetAccessor */:
case 152 /* SetAccessor */:
case 184 /* FunctionExpression */:
case 225 /* FunctionDeclaration */:
case 185 /* ArrowFunction */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.asteriskToken) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.questionToken) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type) ||
visitNode(cbNode, node.equalsGreaterThanToken) ||
visitNode(cbNode, node.body);
case 157 /* TypeReference */:
return visitNode(cbNode, node.typeName) ||
visitNodes(cbNodes, node.typeArguments);
case 156 /* TypePredicate */:
return visitNode(cbNode, node.parameterName) ||
visitNode(cbNode, node.type);
case 160 /* TypeQuery */:
return visitNode(cbNode, node.exprName);
case 161 /* TypeLiteral */:
return visitNodes(cbNodes, node.members);
case 162 /* ArrayType */:
return visitNode(cbNode, node.elementType);
case 163 /* TupleType */:
return visitNodes(cbNodes, node.elementTypes);
case 164 /* UnionType */:
case 165 /* IntersectionType */:
return visitNodes(cbNodes, node.types);
case 166 /* ParenthesizedType */:
case 168 /* TypeOperator */:
return visitNode(cbNode, node.type);
case 169 /* IndexedAccessType */:
return visitNode(cbNode, node.objectType) ||
visitNode(cbNode, node.indexType);
case 170 /* MappedType */:
return visitNode(cbNode, node.readonlyToken) ||
visitNode(cbNode, node.typeParameter) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.type);
case 171 /* LiteralType */:
return visitNode(cbNode, node.literal);
case 172 /* ObjectBindingPattern */:
case 173 /* ArrayBindingPattern */:
return visitNodes(cbNodes, node.elements);
case 175 /* ArrayLiteralExpression */:
return visitNodes(cbNodes, node.elements);
case 176 /* ObjectLiteralExpression */:
return visitNodes(cbNodes, node.properties);
case 177 /* PropertyAccessExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.name);
case 178 /* ElementAccessExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.argumentExpression);
case 179 /* CallExpression */:
case 180 /* NewExpression */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.typeArguments) ||
visitNodes(cbNodes, node.arguments);
case 181 /* TaggedTemplateExpression */:
return visitNode(cbNode, node.tag) ||
visitNode(cbNode, node.template);
case 182 /* TypeAssertionExpression */:
return visitNode(cbNode, node.type) ||
visitNode(cbNode, node.expression);
case 183 /* ParenthesizedExpression */:
return visitNode(cbNode, node.expression);
case 186 /* DeleteExpression */:
return visitNode(cbNode, node.expression);
case 187 /* TypeOfExpression */:
return visitNode(cbNode, node.expression);
case 188 /* VoidExpression */:
return visitNode(cbNode, node.expression);
case 190 /* PrefixUnaryExpression */:
return visitNode(cbNode, node.operand);
case 195 /* YieldExpression */:
return visitNode(cbNode, node.asteriskToken) ||
visitNode(cbNode, node.expression);
case 189 /* AwaitExpression */:
return visitNode(cbNode, node.expression);
case 191 /* PostfixUnaryExpression */:
return visitNode(cbNode, node.operand);
case 192 /* BinaryExpression */:
return visitNode(cbNode, node.left) ||
visitNode(cbNode, node.operatorToken) ||
visitNode(cbNode, node.right);
case 200 /* AsExpression */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.type);
case 201 /* NonNullExpression */:
return visitNode(cbNode, node.expression);
case 193 /* ConditionalExpression */:
return visitNode(cbNode, node.condition) ||
visitNode(cbNode, node.questionToken) ||
visitNode(cbNode, node.whenTrue) ||
visitNode(cbNode, node.colonToken) ||
visitNode(cbNode, node.whenFalse);
case 196 /* SpreadElement */:
return visitNode(cbNode, node.expression);
case 204 /* Block */:
case 231 /* ModuleBlock */:
return visitNodes(cbNodes, node.statements);
case 261 /* SourceFile */:
return visitNodes(cbNodes, node.statements) ||
visitNode(cbNode, node.endOfFileToken);
case 205 /* VariableStatement */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.declarationList);
case 224 /* VariableDeclarationList */:
return visitNodes(cbNodes, node.declarations);
case 207 /* ExpressionStatement */:
return visitNode(cbNode, node.expression);
case 208 /* IfStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.thenStatement) ||
visitNode(cbNode, node.elseStatement);
case 209 /* DoStatement */:
return visitNode(cbNode, node.statement) ||
visitNode(cbNode, node.expression);
case 210 /* WhileStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 211 /* ForStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.condition) ||
visitNode(cbNode, node.incrementor) ||
visitNode(cbNode, node.statement);
case 212 /* ForInStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 213 /* ForOfStatement */:
return visitNode(cbNode, node.initializer) ||
visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 214 /* ContinueStatement */:
case 215 /* BreakStatement */:
return visitNode(cbNode, node.label);
case 216 /* ReturnStatement */:
return visitNode(cbNode, node.expression);
case 217 /* WithStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.statement);
case 218 /* SwitchStatement */:
return visitNode(cbNode, node.expression) ||
visitNode(cbNode, node.caseBlock);
case 232 /* CaseBlock */:
return visitNodes(cbNodes, node.clauses);
case 253 /* CaseClause */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.statements);
case 254 /* DefaultClause */:
return visitNodes(cbNodes, node.statements);
case 219 /* LabeledStatement */:
return visitNode(cbNode, node.label) ||
visitNode(cbNode, node.statement);
case 220 /* ThrowStatement */:
return visitNode(cbNode, node.expression);
case 221 /* TryStatement */:
return visitNode(cbNode, node.tryBlock) ||
visitNode(cbNode, node.catchClause) ||
visitNode(cbNode, node.finallyBlock);
case 256 /* CatchClause */:
return visitNode(cbNode, node.variableDeclaration) ||
visitNode(cbNode, node.block);
case 145 /* Decorator */:
return visitNode(cbNode, node.expression);
case 226 /* ClassDeclaration */:
case 197 /* ClassExpression */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.heritageClauses) ||
visitNodes(cbNodes, node.members);
case 227 /* InterfaceDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNodes(cbNodes, node.heritageClauses) ||
visitNodes(cbNodes, node.members);
case 228 /* TypeAliasDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeParameters) ||
visitNode(cbNode, node.type);
case 229 /* EnumDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.members);
case 260 /* EnumMember */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.initializer);
case 230 /* ModuleDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.body);
case 234 /* ImportEqualsDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.moduleReference);
case 235 /* ImportDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.importClause) ||
visitNode(cbNode, node.moduleSpecifier);
case 236 /* ImportClause */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.namedBindings);
case 233 /* NamespaceExportDeclaration */:
return visitNode(cbNode, node.name);
case 237 /* NamespaceImport */:
return visitNode(cbNode, node.name);
case 238 /* NamedImports */:
case 242 /* NamedExports */:
return visitNodes(cbNodes, node.elements);
case 241 /* ExportDeclaration */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.exportClause) ||
visitNode(cbNode, node.moduleSpecifier);
case 239 /* ImportSpecifier */:
case 243 /* ExportSpecifier */:
return visitNode(cbNode, node.propertyName) ||
visitNode(cbNode, node.name);
case 240 /* ExportAssignment */:
return visitNodes(cbNodes, node.decorators) ||
visitNodes(cbNodes, node.modifiers) ||
visitNode(cbNode, node.expression);
case 194 /* TemplateExpression */:
return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans);
case 202 /* TemplateSpan */:
return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal);
case 142 /* ComputedPropertyName */:
return visitNode(cbNode, node.expression);
case 255 /* HeritageClause */:
return visitNodes(cbNodes, node.types);
case 199 /* ExpressionWithTypeArguments */:
return visitNode(cbNode, node.expression) ||
visitNodes(cbNodes, node.typeArguments);
case 245 /* ExternalModuleReference */:
return visitNode(cbNode, node.expression);
case 244 /* MissingDeclaration */:
return visitNodes(cbNodes, node.decorators);
case 246 /* JsxElement */:
return visitNode(cbNode, node.openingElement) ||
visitNodes(cbNodes, node.children) ||
visitNode(cbNode, node.closingElement);
case 247 /* JsxSelfClosingElement */:
case 248 /* JsxOpeningElement */:
return visitNode(cbNode, node.tagName) ||
visitNodes(cbNodes, node.attributes);
case 250 /* JsxAttribute */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.initializer);
case 251 /* JsxSpreadAttribute */:
return visitNode(cbNode, node.expression);
case 252 /* JsxExpression */:
return visitNode(cbNode, node.expression);
case 249 /* JsxClosingElement */:
return visitNode(cbNode, node.tagName);
case 262 /* JSDocTypeExpression */:
return visitNode(cbNode, node.type);
case 266 /* JSDocUnionType */:
return visitNodes(cbNodes, node.types);
case 267 /* JSDocTupleType */:
return visitNodes(cbNodes, node.types);
case 265 /* JSDocArrayType */:
return visitNode(cbNode, node.elementType);
case 269 /* JSDocNonNullableType */:
return visitNode(cbNode, node.type);
case 268 /* JSDocNullableType */:
return visitNode(cbNode, node.type);
case 270 /* JSDocRecordType */:
return visitNode(cbNode, node.literal);
case 272 /* JSDocTypeReference */:
return visitNode(cbNode, node.name) ||
visitNodes(cbNodes, node.typeArguments);
case 273 /* JSDocOptionalType */:
return visitNode(cbNode, node.type);
case 274 /* JSDocFunctionType */:
return visitNodes(cbNodes, node.parameters) ||
visitNode(cbNode, node.type);
case 275 /* JSDocVariadicType */:
return visitNode(cbNode, node.type);
case 276 /* JSDocConstructorType */:
return visitNode(cbNode, node.type);
case 277 /* JSDocThisType */:
return visitNode(cbNode, node.type);
case 271 /* JSDocRecordMember */:
return visitNode(cbNode, node.name) ||
visitNode(cbNode, node.type);
case 278 /* JSDocComment */:
return visitNodes(cbNodes, node.tags);
case 281 /* JSDocParameterTag */:
return visitNode(cbNode, node.preParameterName) ||
visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.postParameterName);
case 282 /* JSDocReturnTag */:
return visitNode(cbNode, node.typeExpression);
case 283 /* JSDocTypeTag */:
return visitNode(cbNode, node.typeExpression);
case 280 /* JSDocAugmentsTag */:
return visitNode(cbNode, node.typeExpression);
case 284 /* JSDocTemplateTag */:
return visitNodes(cbNodes, node.typeParameters);
case 285 /* JSDocTypedefTag */:
return visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.fullName) ||
visitNode(cbNode, node.name) ||
visitNode(cbNode, node.jsDocTypeLiteral);
case 287 /* JSDocTypeLiteral */:
return visitNodes(cbNodes, node.jsDocPropertyTags);
case 286 /* JSDocPropertyTag */:
return visitNode(cbNode, node.typeExpression) ||
visitNode(cbNode, node.name);
case 294 /* PartiallyEmittedExpression */:
return visitNode(cbNode, node.expression);
case 288 /* JSDocLiteralType */:
return visitNode(cbNode, node.literal);
}
}