-
-
Notifications
You must be signed in to change notification settings - Fork 185
Expand file tree
/
Copy pathblock.ts
More file actions
26 lines (23 loc) · 1.07 KB
/
block.ts
File metadata and controls
26 lines (23 loc) · 1.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import * as ts from "typescript";
import * as lua from "../../LuaAST";
import { FunctionVisitor, TransformationContext } from "../context";
import { performHoisting, Scope, ScopeType } from "../utils/scope";
export function transformBlockOrStatement(context: TransformationContext, statement: ts.Statement): lua.Statement[] {
return context.transformStatements(ts.isBlock(statement) ? statement.statements : statement);
}
export function transformScopeBlock(
context: TransformationContext,
node: ts.Block,
scopeType: ScopeType
): [lua.Block, Scope] {
context.pushScope(scopeType, node);
const statements = performHoisting(context, context.transformStatements(node.statements));
const scope = context.popScope();
return [lua.createBlock(statements, node), scope];
}
export const transformBlock: FunctionVisitor<ts.Block> = (node, context) => {
context.pushScope(ScopeType.Block, node);
const statements = performHoisting(context, context.transformStatements(node.statements));
context.popScope();
return lua.createDoStatement(statements, node);
};