import * as ast from "../ast"; /** * Returns the free locals and free functions of an expression. (The type system ensures these are * disjoint within any top-level declaration.) */ export declare function expressionFreeVars(exp: ast.Expression): Set; /** * Ensures that the free locals of an expression have been defined along every control path * Raises an error if there are potentially un-initialized stack locals * - Precondition: the expression must have passed typechecking * - Precondition: all the current stack locals must be in [locals] * - Precondition: [defined] is the subset of [locals] defined on every * - Returns the free functions (the free locals that are not stack-allocated locals) */ export declare function checkExpressionUsesGetFreeFunctions(locals: Set, defined: Set, exp: ast.Expression): Set; export declare function checkStatementFlow(locals: Set, constants: Set, defined: Set, stm: ast.Statement): { locals: Set; defined: Set; functions: Set; returns: boolean; };