Skip to content

Commit 18f0d85

Browse files
author
Andy
authored
Merge pull request #14581 from Microsoft/foreachchild
Expose `forEachChild` as a method of Node
2 parents d5c1b71 + 746b7e4 commit 18f0d85

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

src/services/services.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,10 @@ namespace ts {
210210

211211
return child.kind < SyntaxKind.FirstNode ? child : child.getLastToken(sourceFile);
212212
}
213+
214+
public forEachChild<T>(cbNode: (node: Node) => T, cbNodeArray?: (nodes: Node[]) => T): T {
215+
return forEachChild(this, cbNode, cbNodeArray);
216+
}
213217
}
214218

215219
class TokenOrIdentifierObject implements Node {
@@ -283,6 +287,10 @@ namespace ts {
283287
public getLastToken(): Node {
284288
return undefined;
285289
}
290+
291+
public forEachChild<T>(): T {
292+
return undefined;
293+
}
286294
}
287295

288296
class SymbolObject implements Symbol {

src/services/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ namespace ts {
1818
getText(sourceFile?: SourceFile): string;
1919
getFirstToken(sourceFile?: SourceFile): Node;
2020
getLastToken(sourceFile?: SourceFile): Node;
21+
// See ts.forEachChild for documentation.
22+
forEachChild<T>(cbNode: (node: Node) => T, cbNodeArray?: (nodes: Node[]) => T): T;
2123
}
2224

2325
export interface Symbol {

0 commit comments

Comments
 (0)