You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
1.2 KiB
24 lines
1.2 KiB
import * as ts from 'typescript'; |
|
export declare function endsControlFlow(statement: ts.Statement | ts.BlockLike, checker?: ts.TypeChecker): boolean; |
|
export declare type ControlFlowStatement = ts.BreakStatement | ts.ContinueStatement | ts.ReturnStatement | ts.ThrowStatement | ts.ExpressionStatement & { |
|
expression: ts.CallExpression; |
|
}; |
|
export interface ControlFlowEnd { |
|
/** |
|
* Statements that may end control flow at this statement. |
|
* Does not contain control flow statements that jump only inside the statement, for example a `continue` inside a nested for loop. |
|
*/ |
|
readonly statements: ReadonlyArray<ControlFlowStatement>; |
|
/** `true` if control flow definitely ends. */ |
|
readonly end: boolean; |
|
} |
|
export declare function getControlFlowEnd(statement: ts.Statement | ts.BlockLike, checker?: ts.TypeChecker): ControlFlowEnd; |
|
export declare enum SignatureEffect { |
|
Never = 1, |
|
Asserts = 2 |
|
} |
|
/** |
|
* Dermines whether a top level CallExpression has a control flow effect according to TypeScript's rules. |
|
* This handles functions returning `never` and `asserts`. |
|
*/ |
|
export declare function callExpressionAffectsControlFlow(node: ts.CallExpression, checker: ts.TypeChecker): SignatureEffect | undefined;
|
|
|