1 import * as ts from 'typescript';
\r
2 export declare function endsControlFlow(statement: ts.Statement | ts.BlockLike, checker?: ts.TypeChecker): boolean;
\r
3 export declare type ControlFlowStatement = ts.BreakStatement | ts.ContinueStatement | ts.ReturnStatement | ts.ThrowStatement | ts.ExpressionStatement & {
\r
4 expression: ts.CallExpression;
\r
6 export interface ControlFlowEnd {
\r
8 * Statements that may end control flow at this statement.
\r
9 * Does not contain control flow statements that jump only inside the statement, for example a `continue` inside a nested for loop.
\r
11 readonly statements: ReadonlyArray<ControlFlowStatement>;
\r
12 /** `true` if control flow definitely ends. */
\r
13 readonly end: boolean;
\r
15 export declare function getControlFlowEnd(statement: ts.Statement | ts.BlockLike, checker?: ts.TypeChecker): ControlFlowEnd;
\r
16 export declare enum SignatureEffect {
\r
21 * Dermines whether a top level CallExpression has a control flow effect according to TypeScript's rules.
\r
22 * This handles functions returning `never` and `asserts`.
\r
24 export declare function callExpressionAffectsControlFlow(node: ts.CallExpression, checker: ts.TypeChecker): SignatureEffect | undefined;
\r