UNPKG

typescript-to-lua

Version:

A generic TypeScript to Lua transpiler. Write your code in TypeScript and publish Lua!

42 lines 2.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.transformContinueStatement = exports.transformBreakStatement = void 0; const CompilerOptions_1 = require("../../CompilerOptions"); const lua = require("../../LuaAST"); const scope_1 = require("../utils/scope"); const transformBreakStatement = (breakStatement, context) => { void context; return lua.createBreakStatement(breakStatement); }; exports.transformBreakStatement = transformBreakStatement; const transformContinueStatement = (statement, context) => { var _a; const scope = (0, scope_1.findScope)(context, scope_1.ScopeType.Loop); const continuedWith = { [CompilerOptions_1.LuaTarget.Universal]: scope_1.LoopContinued.WithRepeatBreak, [CompilerOptions_1.LuaTarget.Lua50]: scope_1.LoopContinued.WithRepeatBreak, [CompilerOptions_1.LuaTarget.Lua51]: scope_1.LoopContinued.WithRepeatBreak, [CompilerOptions_1.LuaTarget.Lua52]: scope_1.LoopContinued.WithGoto, [CompilerOptions_1.LuaTarget.Lua53]: scope_1.LoopContinued.WithGoto, [CompilerOptions_1.LuaTarget.Lua54]: scope_1.LoopContinued.WithGoto, [CompilerOptions_1.LuaTarget.LuaJIT]: scope_1.LoopContinued.WithGoto, [CompilerOptions_1.LuaTarget.Luau]: scope_1.LoopContinued.WithContinue, }[context.luaTarget]; if (scope) { scope.loopContinued = continuedWith; } const label = `__continue${(_a = scope === null || scope === void 0 ? void 0 : scope.id) !== null && _a !== void 0 ? _a : ""}`; switch (continuedWith) { case scope_1.LoopContinued.WithGoto: return lua.createGotoStatement(label, statement); case scope_1.LoopContinued.WithContinue: return lua.createContinueStatement(statement); case scope_1.LoopContinued.WithRepeatBreak: return [ lua.createAssignmentStatement(lua.createIdentifier(label), lua.createBooleanLiteral(true), statement), lua.createBreakStatement(statement), ]; } }; exports.transformContinueStatement = transformContinueStatement; //# sourceMappingURL=break-continue.js.map