typescript-to-lua 0.42.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/CHANGELOG.md +31 -1
  2. package/dist/CompilerOptions.d.ts +4 -3
  3. package/dist/LuaAST.js +4 -4
  4. package/dist/LuaLib.d.ts +7 -0
  5. package/dist/LuaLib.js +32 -1
  6. package/dist/LuaPrinter.d.ts +6 -2
  7. package/dist/LuaPrinter.js +25 -16
  8. package/dist/cli/diagnostics.js +2 -2
  9. package/dist/cli/parse.d.ts +1 -1
  10. package/dist/cli/parse.js +14 -0
  11. package/dist/cli/report.js +1 -1
  12. package/dist/cli/tsconfig.js +4 -4
  13. package/dist/lualib/Await.lua +59 -0
  14. package/dist/lualib/OptionalMethodCall.lua +3 -1
  15. package/dist/lualib/Promise.lua +172 -0
  16. package/dist/lualib/PromiseAll.lua +44 -0
  17. package/dist/lualib/PromiseAllSettled.lua +48 -0
  18. package/dist/lualib/PromiseAny.lua +41 -0
  19. package/dist/lualib/PromiseRace.lua +28 -0
  20. package/dist/lualib/SourceMapTraceBack.lua +20 -10
  21. package/dist/lualib/StringReplace.lua +8 -13
  22. package/dist/lualib/StringReplaceAll.lua +35 -0
  23. package/dist/lualib/lualib_bundle.lua +503 -62
  24. package/dist/transformation/builtins/array.js +29 -29
  25. package/dist/transformation/builtins/console.js +2 -2
  26. package/dist/transformation/builtins/function.js +9 -9
  27. package/dist/transformation/builtins/global.js +8 -8
  28. package/dist/transformation/builtins/index.js +35 -32
  29. package/dist/transformation/builtins/math.js +4 -4
  30. package/dist/transformation/builtins/number.js +7 -7
  31. package/dist/transformation/builtins/object.js +11 -11
  32. package/dist/transformation/builtins/promise.d.ts +7 -0
  33. package/dist/transformation/builtins/promise.js +46 -0
  34. package/dist/transformation/builtins/string.js +32 -30
  35. package/dist/transformation/builtins/symbol.js +3 -3
  36. package/dist/transformation/context/context.js +5 -5
  37. package/dist/transformation/index.js +1 -1
  38. package/dist/transformation/utils/annotations.d.ts +1 -4
  39. package/dist/transformation/utils/annotations.js +2 -39
  40. package/dist/transformation/utils/assignment-validation.js +8 -7
  41. package/dist/transformation/utils/diagnostics.d.ts +3 -0
  42. package/dist/transformation/utils/diagnostics.js +6 -5
  43. package/dist/transformation/utils/export.d.ts +3 -2
  44. package/dist/transformation/utils/export.js +14 -7
  45. package/dist/transformation/utils/function-context.js +19 -13
  46. package/dist/transformation/utils/lua-ast.js +18 -19
  47. package/dist/transformation/utils/lualib.js +1 -1
  48. package/dist/transformation/utils/safe-names.js +5 -5
  49. package/dist/transformation/utils/scope.d.ts +6 -0
  50. package/dist/transformation/utils/scope.js +70 -40
  51. package/dist/transformation/utils/symbols.js +6 -6
  52. package/dist/transformation/utils/transform.js +3 -3
  53. package/dist/transformation/utils/typescript/nodes.d.ts +2 -0
  54. package/dist/transformation/utils/typescript/nodes.js +21 -1
  55. package/dist/transformation/visitors/access.js +16 -16
  56. package/dist/transformation/visitors/async-await.d.ts +6 -0
  57. package/dist/transformation/visitors/async-await.js +38 -0
  58. package/dist/transformation/visitors/binary-expression/assignments.js +29 -29
  59. package/dist/transformation/visitors/binary-expression/bit.js +4 -4
  60. package/dist/transformation/visitors/binary-expression/compound.js +18 -18
  61. package/dist/transformation/visitors/binary-expression/destructuring-assignments.js +17 -17
  62. package/dist/transformation/visitors/binary-expression/index.js +21 -21
  63. package/dist/transformation/visitors/block.js +6 -6
  64. package/dist/transformation/visitors/break-continue.js +4 -9
  65. package/dist/transformation/visitors/call.js +38 -33
  66. package/dist/transformation/visitors/class/decorators.js +3 -3
  67. package/dist/transformation/visitors/class/index.js +41 -34
  68. package/dist/transformation/visitors/class/members/accessors.js +6 -6
  69. package/dist/transformation/visitors/class/members/constructor.js +7 -7
  70. package/dist/transformation/visitors/class/members/fields.js +6 -6
  71. package/dist/transformation/visitors/class/members/method.js +6 -6
  72. package/dist/transformation/visitors/class/new.js +13 -13
  73. package/dist/transformation/visitors/class/setup.js +11 -11
  74. package/dist/transformation/visitors/class/utils.js +2 -2
  75. package/dist/transformation/visitors/conditional.js +6 -6
  76. package/dist/transformation/visitors/delete.js +4 -4
  77. package/dist/transformation/visitors/enum.js +8 -8
  78. package/dist/transformation/visitors/errors.js +30 -31
  79. package/dist/transformation/visitors/expression-statement.js +10 -6
  80. package/dist/transformation/visitors/function.js +33 -21
  81. package/dist/transformation/visitors/identifier.js +25 -19
  82. package/dist/transformation/visitors/index.js +4 -2
  83. package/dist/transformation/visitors/language-extensions/iterable.js +7 -7
  84. package/dist/transformation/visitors/language-extensions/multi.d.ts +1 -1
  85. package/dist/transformation/visitors/language-extensions/multi.js +5 -7
  86. package/dist/transformation/visitors/language-extensions/operators.js +6 -6
  87. package/dist/transformation/visitors/language-extensions/range.js +6 -6
  88. package/dist/transformation/visitors/language-extensions/table.js +5 -5
  89. package/dist/transformation/visitors/literal.d.ts +1 -2
  90. package/dist/transformation/visitors/literal.js +19 -42
  91. package/dist/transformation/visitors/loops/do-while.js +2 -2
  92. package/dist/transformation/visitors/loops/for-in.js +4 -4
  93. package/dist/transformation/visitors/loops/for-of.js +13 -13
  94. package/dist/transformation/visitors/loops/for.js +3 -3
  95. package/dist/transformation/visitors/loops/utils.js +9 -9
  96. package/dist/transformation/visitors/modules/export.js +13 -14
  97. package/dist/transformation/visitors/modules/import.js +10 -10
  98. package/dist/transformation/visitors/namespace.js +13 -13
  99. package/dist/transformation/visitors/return.d.ts +1 -0
  100. package/dist/transformation/visitors/return.js +41 -49
  101. package/dist/transformation/visitors/sourceFile.js +8 -8
  102. package/dist/transformation/visitors/spread.js +16 -11
  103. package/dist/transformation/visitors/switch.js +132 -30
  104. package/dist/transformation/visitors/template.js +5 -5
  105. package/dist/transformation/visitors/typeof.js +2 -2
  106. package/dist/transformation/visitors/typescript.js +1 -1
  107. package/dist/transformation/visitors/unary-expression.js +9 -9
  108. package/dist/transformation/visitors/variable-declaration.js +28 -28
  109. package/dist/transformation/visitors/void.d.ts +6 -0
  110. package/dist/transformation/visitors/void.js +23 -0
  111. package/dist/transpilation/bundle.d.ts +3 -0
  112. package/dist/transpilation/bundle.js +56 -13
  113. package/dist/transpilation/diagnostics.js +3 -3
  114. package/dist/transpilation/index.js +2 -2
  115. package/dist/transpilation/output-collector.js +2 -2
  116. package/dist/transpilation/plugins.js +1 -1
  117. package/dist/transpilation/resolve.js +28 -15
  118. package/dist/transpilation/transformers.d.ts +1 -0
  119. package/dist/transpilation/transformers.js +61 -25
  120. package/dist/transpilation/transpile.js +7 -7
  121. package/dist/transpilation/transpiler.js +8 -8
  122. package/dist/transpilation/utils.js +3 -2
  123. package/dist/tstl.js +8 -8
  124. package/dist/utils.js +2 -2
  125. package/package.json +15 -12
  126. package/dist/transformation/visitors/jsx/jsx.d.ts +0 -9
  127. package/dist/transformation/visitors/jsx/jsx.js +0 -237
  128. package/dist/transformation/visitors/jsx/xhtml.d.ts +0 -3
  129. package/dist/transformation/visitors/jsx/xhtml.js +0 -260
@@ -11,34 +11,34 @@ const utils_2 = require("./utils");
11
11
  function createClassSetup(context, statement, className, localClassName, extendsType) {
12
12
  const result = [];
13
13
  // __TS__Class()
14
- const classInitializer = lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.Class, statement);
15
- const defaultExportLeftHandSide = export_1.hasDefaultExportModifier(statement)
16
- ? lua.createTableIndexExpression(lua_ast_1.createExportsIdentifier(), export_1.createDefaultExportStringLiteral(statement))
14
+ const classInitializer = (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.Class, statement);
15
+ const defaultExportLeftHandSide = (0, export_1.hasDefaultExportModifier)(statement)
16
+ ? lua.createTableIndexExpression((0, lua_ast_1.createExportsIdentifier)(), (0, export_1.createDefaultExportStringLiteral)(statement))
17
17
  : undefined;
18
18
  // [____exports.]className = __TS__Class()
19
19
  if (defaultExportLeftHandSide) {
20
20
  result.push(lua.createAssignmentStatement(defaultExportLeftHandSide, classInitializer, statement));
21
21
  }
22
22
  else {
23
- result.push(...lua_ast_1.createLocalOrExportedOrGlobalDeclaration(context, className, classInitializer, statement));
23
+ result.push(...(0, lua_ast_1.createLocalOrExportedOrGlobalDeclaration)(context, className, classInitializer, statement));
24
24
  }
25
25
  if (defaultExportLeftHandSide) {
26
26
  // local localClassName = ____exports.default
27
27
  result.push(lua.createVariableDeclarationStatement(localClassName, defaultExportLeftHandSide));
28
28
  }
29
29
  else {
30
- const exportScope = export_1.getIdentifierExportScope(context, className);
30
+ const exportScope = (0, export_1.getIdentifierExportScope)(context, className);
31
31
  if (exportScope) {
32
32
  // local localClassName = ____exports.className
33
- result.push(lua.createVariableDeclarationStatement(localClassName, export_1.createExportedIdentifier(context, lua.cloneIdentifier(className), exportScope)));
33
+ result.push(lua.createVariableDeclarationStatement(localClassName, (0, export_1.createExportedIdentifier)(context, lua.cloneIdentifier(className), exportScope)));
34
34
  }
35
35
  }
36
36
  // localClassName.name = className
37
37
  result.push(lua.createAssignmentStatement(lua.createTableIndexExpression(lua.cloneIdentifier(localClassName), lua.createStringLiteral("name")), getReflectionClassName(context, statement, className), statement));
38
38
  if (extendsType) {
39
- const extendedNode = utils_2.getExtendedNode(context, statement);
40
- utils_1.assert(extendedNode);
41
- result.push(lua.createExpressionStatement(lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ClassExtends, utils_2.getExtendsClause(statement), lua.cloneIdentifier(localClassName), context.transformExpression(extendedNode.expression))));
39
+ const extendedNode = (0, utils_2.getExtendedNode)(context, statement);
40
+ (0, utils_1.assert)(extendedNode);
41
+ result.push(lua.createExpressionStatement((0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ClassExtends, (0, utils_2.getExtendsClause)(statement), lua.cloneIdentifier(localClassName), context.transformExpression(extendedNode.expression))));
42
42
  }
43
43
  return result;
44
44
  }
@@ -50,10 +50,10 @@ function getReflectionClassName(context, declaration, className) {
50
50
  else if (ts.isVariableDeclaration(declaration.parent) && ts.isIdentifier(declaration.parent.name)) {
51
51
  return lua.createStringLiteral(declaration.parent.name.text);
52
52
  }
53
- else if (export_1.hasDefaultExportModifier(declaration)) {
53
+ else if ((0, export_1.hasDefaultExportModifier)(declaration)) {
54
54
  return lua.createStringLiteral("default");
55
55
  }
56
- if (utils_2.getExtendedNode(context, declaration)) {
56
+ if ((0, utils_2.getExtendedNode)(context, declaration)) {
57
57
  return lua.createTableIndexExpression(className, lua.createStringLiteral("name"));
58
58
  }
59
59
  return lua.createStringLiteral("");
@@ -19,9 +19,9 @@ function getExtendedNode(context, node) {
19
19
  if (!extendsClause)
20
20
  return;
21
21
  const superType = context.checker.getTypeAtLocation(extendsClause.types[0]);
22
- const annotations = annotations_1.getTypeAnnotations(superType);
22
+ const annotations = (0, annotations_1.getTypeAnnotations)(superType);
23
23
  if (annotations.has(annotations_1.AnnotationKind.PureAbstract)) {
24
- context.diagnostics.push(diagnostics_1.annotationRemoved(extendsClause, annotations_1.AnnotationKind.PureAbstract));
24
+ context.diagnostics.push((0, diagnostics_1.annotationRemoved)(extendsClause, annotations_1.AnnotationKind.PureAbstract));
25
25
  }
26
26
  return extendsClause.types[0];
27
27
  }
@@ -55,10 +55,10 @@ const transformConditionalExpression = (expression, context) => {
55
55
  };
56
56
  exports.transformConditionalExpression = transformConditionalExpression;
57
57
  function transformIfStatement(statement, context) {
58
- scope_1.pushScope(context, scope_1.ScopeType.Conditional);
58
+ (0, scope_1.pushScope)(context, scope_1.ScopeType.Conditional);
59
59
  const condition = context.transformExpression(statement.expression);
60
- const statements = scope_1.performHoisting(context, block_1.transformBlockOrStatement(context, statement.thenStatement));
61
- scope_1.popScope(context);
60
+ const statements = (0, scope_1.performHoisting)(context, (0, block_1.transformBlockOrStatement)(context, statement.thenStatement));
61
+ (0, scope_1.popScope)(context);
62
62
  const ifBlock = lua.createBlock(statements);
63
63
  if (statement.elseStatement) {
64
64
  if (ts.isIfStatement(statement.elseStatement)) {
@@ -66,9 +66,9 @@ function transformIfStatement(statement, context) {
66
66
  return lua.createIfStatement(condition, ifBlock, elseStatement);
67
67
  }
68
68
  else {
69
- scope_1.pushScope(context, scope_1.ScopeType.Conditional);
70
- const elseStatements = scope_1.performHoisting(context, block_1.transformBlockOrStatement(context, statement.elseStatement));
71
- scope_1.popScope(context);
69
+ (0, scope_1.pushScope)(context, scope_1.ScopeType.Conditional);
70
+ const elseStatements = (0, scope_1.performHoisting)(context, (0, block_1.transformBlockOrStatement)(context, statement.elseStatement));
71
+ (0, scope_1.popScope)(context);
72
72
  const elseBlock = lua.createBlock(elseStatements);
73
73
  return lua.createIfStatement(condition, ifBlock, elseBlock);
74
74
  }
@@ -21,15 +21,15 @@ const transformDeleteExpression = (node, context) => {
21
21
  propertyExpression = context.transformExpression(node.expression.argumentExpression);
22
22
  const type = context.checker.getTypeAtLocation(node.expression.expression);
23
23
  const argumentType = context.checker.getTypeAtLocation(node.expression.argumentExpression);
24
- if (typescript_1.isArrayType(context, type) && typescript_1.isNumberType(context, argumentType)) {
25
- propertyExpression = lua_ast_1.addToNumericExpression(propertyExpression, 1);
24
+ if ((0, typescript_1.isArrayType)(context, type) && (0, typescript_1.isNumberType)(context, argumentType)) {
25
+ propertyExpression = (0, lua_ast_1.addToNumericExpression)(propertyExpression, 1);
26
26
  }
27
27
  }
28
28
  if (!ownerExpression || !propertyExpression) {
29
- context.diagnostics.push(diagnostics_1.unsupportedProperty(node, "delete", ts.SyntaxKind[node.kind]));
29
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(node, "delete", ts.SyntaxKind[node.kind]));
30
30
  return lua.createNilLiteral();
31
31
  }
32
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.Delete, node, ownerExpression, propertyExpression);
32
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.Delete, node, ownerExpression, propertyExpression);
33
33
  };
34
34
  exports.transformDeleteExpression = transformDeleteExpression;
35
35
  //# sourceMappingURL=delete.js.map
@@ -24,16 +24,16 @@ const transformEnumDeclaration = (node, context) => {
24
24
  return undefined;
25
25
  }
26
26
  const type = context.checker.getTypeAtLocation(node);
27
- const membersOnly = annotations_1.getTypeAnnotations(type).has(annotations_1.AnnotationKind.CompileMembersOnly);
27
+ const membersOnly = (0, annotations_1.getTypeAnnotations)(type).has(annotations_1.AnnotationKind.CompileMembersOnly);
28
28
  const result = [];
29
- if (!membersOnly && typescript_1.isFirstDeclaration(context, node)) {
30
- const name = identifier_1.transformIdentifier(context, node.name);
29
+ if (!membersOnly && (0, typescript_1.isFirstDeclaration)(context, node)) {
30
+ const name = (0, identifier_1.transformIdentifier)(context, node.name);
31
31
  const table = lua.createBinaryExpression(lua.cloneIdentifier(name), lua.createTableExpression(), lua.SyntaxKind.OrOperator);
32
- result.push(...lua_ast_1.createLocalOrExportedOrGlobalDeclaration(context, name, table, node));
32
+ result.push(...(0, lua_ast_1.createLocalOrExportedOrGlobalDeclaration)(context, name, table, node));
33
33
  }
34
34
  const enumReference = context.transformExpression(node.name);
35
35
  for (const member of node.members) {
36
- const memberName = literal_1.transformPropertyName(context, member.name);
36
+ const memberName = (0, literal_1.transformPropertyName)(context, member.name);
37
37
  let valueExpression;
38
38
  const constEnumValue = tryGetConstEnumValue(context, member);
39
39
  if (constEnumValue) {
@@ -45,7 +45,7 @@ const transformEnumDeclaration = (node, context) => {
45
45
  if ((symbol === null || symbol === void 0 ? void 0 : symbol.valueDeclaration) &&
46
46
  ts.isEnumMember(symbol.valueDeclaration) &&
47
47
  symbol.valueDeclaration.parent === node) {
48
- const otherMemberName = literal_1.transformPropertyName(context, symbol.valueDeclaration.name);
48
+ const otherMemberName = (0, literal_1.transformPropertyName)(context, symbol.valueDeclaration.name);
49
49
  valueExpression = lua.createTableIndexExpression(enumReference, otherMemberName);
50
50
  }
51
51
  }
@@ -58,8 +58,8 @@ const transformEnumDeclaration = (node, context) => {
58
58
  }
59
59
  if (membersOnly) {
60
60
  const enumSymbol = context.checker.getSymbolAtLocation(node.name);
61
- const exportScope = enumSymbol ? export_1.getSymbolExportScope(context, enumSymbol) : undefined;
62
- result.push(...lua_ast_1.createLocalOrExportedOrGlobalDeclaration(context, lua.isIdentifier(memberName)
61
+ const exportScope = enumSymbol ? (0, export_1.getSymbolExportScope)(context, enumSymbol) : undefined;
62
+ result.push(...(0, lua_ast_1.createLocalOrExportedOrGlobalDeclaration)(context, lua.isIdentifier(memberName)
63
63
  ? memberName
64
64
  : lua.createIdentifier(member.name.getText(), member.name), valueExpression, node, exportScope));
65
65
  }
@@ -1,32 +1,43 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.transformThrowStatement = exports.transformTryStatement = void 0;
4
+ const __1 = require("../..");
4
5
  const lua = require("../../LuaAST");
5
- const annotations_1 = require("../utils/annotations");
6
+ const diagnostics_1 = require("../utils/diagnostics");
6
7
  const lua_ast_1 = require("../utils/lua-ast");
7
8
  const scope_1 = require("../utils/scope");
9
+ const typescript_1 = require("../utils/typescript");
8
10
  const block_1 = require("./block");
9
11
  const identifier_1 = require("./identifier");
10
12
  const multi_1 = require("./language-extensions/multi");
13
+ const return_1 = require("./return");
11
14
  const transformTryStatement = (statement, context) => {
12
- const [tryBlock, tryScope] = block_1.transformScopeBlock(context, statement.tryBlock, scope_1.ScopeType.Try);
15
+ const [tryBlock, tryScope] = (0, block_1.transformScopeBlock)(context, statement.tryBlock, scope_1.ScopeType.Try);
16
+ if (context.options.luaTarget === __1.LuaTarget.Lua51 && (0, typescript_1.isInAsyncFunction)(statement)) {
17
+ context.diagnostics.push((0, diagnostics_1.unsupportedForTarget)(statement, "try/catch inside async functions", __1.LuaTarget.Lua51));
18
+ return tryBlock.statements;
19
+ }
20
+ if (context.options.luaTarget === __1.LuaTarget.Lua51 && (0, typescript_1.isInGeneratorFunction)(statement)) {
21
+ context.diagnostics.push((0, diagnostics_1.unsupportedForTarget)(statement, "try/catch inside generator functions", __1.LuaTarget.Lua51));
22
+ return tryBlock.statements;
23
+ }
13
24
  const tryResultIdentifier = lua.createIdentifier("____try");
14
25
  const returnValueIdentifier = lua.createIdentifier("____returnValue");
15
26
  const result = [];
16
- let returnedIdentifier;
27
+ const returnedIdentifier = lua.createIdentifier("____hasReturned");
17
28
  let returnCondition;
18
29
  const pCall = lua.createIdentifier("pcall");
19
30
  const tryCall = lua.createCallExpression(pCall, [lua.createFunctionExpression(tryBlock)]);
20
31
  if (statement.catchClause && statement.catchClause.block.statements.length > 0) {
21
32
  // try with catch
22
- let [catchBlock, catchScope] = block_1.transformScopeBlock(context, statement.catchClause.block, scope_1.ScopeType.Catch);
23
- if (statement.catchClause.variableDeclaration) {
24
- // Replace ____returned with catch variable
25
- returnedIdentifier = identifier_1.transformIdentifier(context, statement.catchClause.variableDeclaration.name);
26
- }
27
- else if (tryScope.functionReturned || catchScope.functionReturned) {
28
- returnedIdentifier = lua.createIdentifier("____returned");
29
- }
33
+ const [catchBlock, catchScope] = (0, block_1.transformScopeBlock)(context, statement.catchClause.block, scope_1.ScopeType.Catch);
34
+ const catchParameter = statement.catchClause.variableDeclaration
35
+ ? (0, identifier_1.transformIdentifier)(context, statement.catchClause.variableDeclaration.name)
36
+ : undefined;
37
+ const catchParameters = () => (catchParameter ? [lua.cloneIdentifier(catchParameter)] : []);
38
+ const catchIdentifier = lua.createIdentifier("____catch");
39
+ const catchFunction = lua.createFunctionExpression(catchBlock, catchParameters());
40
+ result.push(lua.createVariableDeclarationStatement(catchIdentifier, catchFunction));
30
41
  const tryReturnIdentifiers = [tryResultIdentifier]; // ____try
31
42
  if (returnedIdentifier) {
32
43
  tryReturnIdentifiers.push(returnedIdentifier); // ____returned or catch variable
@@ -36,18 +47,15 @@ const transformTryStatement = (statement, context) => {
36
47
  }
37
48
  }
38
49
  result.push(lua.createVariableDeclarationStatement(tryReturnIdentifiers, tryCall));
39
- if ((tryScope.functionReturned || catchScope.functionReturned) && returnedIdentifier) {
40
- // Wrap catch in function if try or catch has return
41
- const catchCall = lua.createCallExpression(lua.createFunctionExpression(catchBlock), []);
42
- const catchAssign = lua.createAssignmentStatement([lua.cloneIdentifier(returnedIdentifier), lua.cloneIdentifier(returnValueIdentifier)], catchCall);
43
- catchBlock = lua.createBlock([catchAssign]);
44
- }
50
+ // Wrap catch in function if try or catch has return
51
+ const catchCall = lua.createCallExpression(catchIdentifier, [lua.cloneIdentifier(returnedIdentifier)]);
52
+ const catchAssign = lua.createAssignmentStatement([lua.cloneIdentifier(returnedIdentifier), lua.cloneIdentifier(returnValueIdentifier)], catchCall);
45
53
  const notTryCondition = lua.createUnaryExpression(tryResultIdentifier, lua.SyntaxKind.NotOperator);
46
- result.push(lua.createIfStatement(notTryCondition, catchBlock));
54
+ result.push(lua.createIfStatement(notTryCondition, lua.createBlock([catchAssign])));
47
55
  }
48
56
  else if (tryScope.functionReturned) {
49
57
  // try with return, but no catch
50
- returnedIdentifier = lua.createIdentifier("____returned");
58
+ // returnedIdentifier = lua.createIdentifier("____returned");
51
59
  const returnedVariables = [tryResultIdentifier, returnedIdentifier, returnValueIdentifier];
52
60
  result.push(lua.createVariableDeclarationStatement(returnedVariables, tryCall));
53
61
  // change return condition from '____returned' to '____try and ____returned'
@@ -61,23 +69,14 @@ const transformTryStatement = (statement, context) => {
61
69
  result.push(...context.transformStatements(statement.finallyBlock));
62
70
  }
63
71
  if (returnCondition && returnedIdentifier) {
64
- // With catch clause:
65
- // if ____returned then return ____returnValue end
66
- // No catch clause:
67
- // if ____try and ____returned then return ____returnValue end
68
72
  const returnValues = [];
69
- const parentTryCatch = scope_1.findScope(context, scope_1.ScopeType.Function | scope_1.ScopeType.Try | scope_1.ScopeType.Catch);
70
- if (parentTryCatch && parentTryCatch.type !== scope_1.ScopeType.Function) {
71
- // Nested try/catch needs to prefix a 'true' return value
72
- returnValues.push(lua.createBooleanLiteral(true));
73
- }
74
- if (annotations_1.isInTupleReturnFunction(context, statement) || multi_1.isInMultiReturnFunction(context, statement)) {
75
- returnValues.push(lua_ast_1.createUnpackCall(context, lua.cloneIdentifier(returnValueIdentifier)));
73
+ if ((0, multi_1.isInMultiReturnFunction)(context, statement)) {
74
+ returnValues.push((0, lua_ast_1.createUnpackCall)(context, lua.cloneIdentifier(returnValueIdentifier)));
76
75
  }
77
76
  else {
78
77
  returnValues.push(lua.cloneIdentifier(returnValueIdentifier));
79
78
  }
80
- const returnStatement = lua.createReturnStatement(returnValues);
79
+ const returnStatement = (0, return_1.createReturnStatement)(context, returnValues, statement);
81
80
  const ifReturnedStatement = lua.createIfStatement(returnCondition, lua.createBlock([returnStatement]));
82
81
  result.push(ifReturnedStatement);
83
82
  }
@@ -6,19 +6,23 @@ const lua = require("../../LuaAST");
6
6
  const binary_expression_1 = require("./binary-expression");
7
7
  const table_1 = require("./language-extensions/table");
8
8
  const unary_expression_1 = require("./unary-expression");
9
+ const void_1 = require("./void");
9
10
  const transformExpressionStatement = (node, context) => {
10
11
  const expression = node.expression;
11
- if (ts.isCallExpression(expression) && table_1.isTableDeleteCall(context, expression)) {
12
- return table_1.transformTableDeleteExpression(context, expression);
12
+ if (ts.isCallExpression(expression) && (0, table_1.isTableDeleteCall)(context, expression)) {
13
+ return (0, table_1.transformTableDeleteExpression)(context, expression);
13
14
  }
14
- if (ts.isCallExpression(expression) && table_1.isTableSetCall(context, expression)) {
15
- return table_1.transformTableSetExpression(context, expression);
15
+ if (ts.isCallExpression(expression) && (0, table_1.isTableSetCall)(context, expression)) {
16
+ return (0, table_1.transformTableSetExpression)(context, expression);
16
17
  }
17
- const unaryExpressionResult = unary_expression_1.transformUnaryExpressionStatement(context, node);
18
+ if (ts.isVoidExpression(expression)) {
19
+ return (0, void_1.transformVoidExpressionStatement)(expression, context);
20
+ }
21
+ const unaryExpressionResult = (0, unary_expression_1.transformUnaryExpressionStatement)(context, node);
18
22
  if (unaryExpressionResult) {
19
23
  return unaryExpressionResult;
20
24
  }
21
- const binaryExpressionResult = binary_expression_1.transformBinaryExpressionStatement(context, node);
25
+ const binaryExpressionResult = (0, binary_expression_1.transformBinaryExpressionStatement)(context, node);
22
26
  if (binaryExpressionResult) {
23
27
  return binaryExpressionResult;
24
28
  }
@@ -4,11 +4,14 @@ exports.transformYieldExpression = exports.transformFunctionDeclaration = export
4
4
  const ts = require("typescript");
5
5
  const lua = require("../../LuaAST");
6
6
  const utils_1 = require("../../utils");
7
+ const annotations_1 = require("../utils/annotations");
8
+ const diagnostics_1 = require("../utils/diagnostics");
7
9
  const export_1 = require("../utils/export");
8
10
  const function_context_1 = require("../utils/function-context");
9
11
  const lua_ast_1 = require("../utils/lua-ast");
10
12
  const lualib_1 = require("../utils/lualib");
11
13
  const scope_1 = require("../utils/scope");
14
+ const async_await_1 = require("./async-await");
12
15
  const identifier_1 = require("./identifier");
13
16
  const return_1 = require("./return");
14
17
  const variable_declaration_1 = require("./variable-declaration");
@@ -31,10 +34,10 @@ function isRestParameterReferenced(identifier, scope) {
31
34
  }
32
35
  function transformFunctionBodyContent(context, body) {
33
36
  if (!ts.isBlock(body)) {
34
- const returnStatement = return_1.transformExpressionBodyToReturnStatement(context, body);
37
+ const returnStatement = (0, return_1.transformExpressionBodyToReturnStatement)(context, body);
35
38
  return [returnStatement];
36
39
  }
37
- const bodyStatements = scope_1.performHoisting(context, context.transformStatements(body.statements));
40
+ const bodyStatements = (0, scope_1.performHoisting)(context, context.transformStatements(body.statements));
38
41
  return bodyStatements;
39
42
  }
40
43
  exports.transformFunctionBodyContent = transformFunctionBodyContent;
@@ -51,16 +54,16 @@ function transformFunctionBodyHeader(context, bodyScope, parameters, spreadIdent
51
54
  headerStatements.push(transformParameterDefaultValueDeclaration(context, identifier, declaration.initializer));
52
55
  }
53
56
  // Binding pattern
54
- bindingPatternDeclarations.push(...variable_declaration_1.transformBindingPattern(context, declaration.name, identifier));
57
+ bindingPatternDeclarations.push(...(0, variable_declaration_1.transformBindingPattern)(context, declaration.name, identifier));
55
58
  }
56
59
  else if (declaration.initializer !== undefined) {
57
60
  // Default parameter
58
- headerStatements.push(transformParameterDefaultValueDeclaration(context, identifier_1.transformIdentifier(context, declaration.name), declaration.initializer));
61
+ headerStatements.push(transformParameterDefaultValueDeclaration(context, (0, identifier_1.transformIdentifier)(context, declaration.name), declaration.initializer));
59
62
  }
60
63
  }
61
64
  // Push spread operator here
62
65
  if (spreadIdentifier && isRestParameterReferenced(spreadIdentifier, bodyScope)) {
63
- const spreadTable = lua_ast_1.wrapInTable(lua.createDotsLiteral());
66
+ const spreadTable = (0, lua_ast_1.wrapInTable)(lua.createDotsLiteral());
64
67
  headerStatements.push(lua.createVariableDeclarationStatement(spreadIdentifier, spreadTable));
65
68
  }
66
69
  // Binding pattern statements need to be after spread table is declared
@@ -69,11 +72,14 @@ function transformFunctionBodyHeader(context, bodyScope, parameters, spreadIdent
69
72
  }
70
73
  exports.transformFunctionBodyHeader = transformFunctionBodyHeader;
71
74
  function transformFunctionBody(context, parameters, body, spreadIdentifier, node) {
72
- const scope = scope_1.pushScope(context, scope_1.ScopeType.Function);
75
+ const scope = (0, scope_1.pushScope)(context, scope_1.ScopeType.Function);
73
76
  scope.node = node;
74
- const bodyStatements = transformFunctionBodyContent(context, body);
77
+ let bodyStatements = transformFunctionBodyContent(context, body);
78
+ if (node && (0, async_await_1.isAsyncFunction)(node)) {
79
+ bodyStatements = (0, async_await_1.wrapInAsyncAwaiter)(context, bodyStatements);
80
+ }
75
81
  const headerStatements = transformFunctionBodyHeader(context, scope, parameters, spreadIdentifier);
76
- scope_1.popScope(context);
82
+ (0, scope_1.popScope)(context);
77
83
  return [[...headerStatements, ...bodyStatements], scope];
78
84
  }
79
85
  exports.transformFunctionBody = transformFunctionBody;
@@ -95,7 +101,7 @@ function transformParameters(context, parameters, functionContext) {
95
101
  // See transformFunctionBody for how these values are destructured
96
102
  const paramName = ts.isObjectBindingPattern(param.name) || ts.isArrayBindingPattern(param.name)
97
103
  ? lua.createIdentifier(`____bindingPattern${identifierIndex++}`)
98
- : identifier_1.transformIdentifier(context, param.name);
104
+ : (0, identifier_1.transformIdentifier)(context, param.name);
99
105
  // This parameter is a spread parameter (...param)
100
106
  if (!param.dotDotDotToken) {
101
107
  paramNames.push(paramName);
@@ -110,10 +116,10 @@ function transformParameters(context, parameters, functionContext) {
110
116
  }
111
117
  exports.transformParameters = transformParameters;
112
118
  function transformFunctionToExpression(context, node) {
113
- utils_1.assert(node.body);
119
+ (0, utils_1.assert)(node.body);
114
120
  const type = context.checker.getTypeAtLocation(node);
115
121
  let functionContext;
116
- if (function_context_1.getFunctionContextType(context, type) !== function_context_1.ContextType.Void) {
122
+ if ((0, function_context_1.getFunctionContextType)(context, type) !== function_context_1.ContextType.Void) {
117
123
  if (ts.isArrowFunction(node)) {
118
124
  // dummy context for arrow functions with parameters
119
125
  if (node.parameters.length > 0) {
@@ -122,7 +128,7 @@ function transformFunctionToExpression(context, node) {
122
128
  }
123
129
  else {
124
130
  // self context
125
- functionContext = lua_ast_1.createSelfIdentifier();
131
+ functionContext = (0, lua_ast_1.createSelfIdentifier)();
126
132
  }
127
133
  }
128
134
  let flags = lua.FunctionExpressionFlags.None;
@@ -136,7 +142,7 @@ function transformFunctionToExpression(context, node) {
136
142
  const functionExpression = lua.createFunctionExpression(lua.createBlock(transformedBody), paramNames, dotsLiteral, flags, node);
137
143
  return [
138
144
  node.asteriskToken
139
- ? lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.Generator, undefined, functionExpression)
145
+ ? (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.Generator, undefined, functionExpression)
140
146
  : functionExpression,
141
147
  functionScope,
142
148
  ];
@@ -147,6 +153,9 @@ function transformFunctionLikeDeclaration(node, context) {
147
153
  // This code can be reached only from object methods, which is TypeScript error
148
154
  return lua.createNilLiteral();
149
155
  }
156
+ if ((0, annotations_1.getNodeAnnotations)(node).has(annotations_1.AnnotationKind.TupleReturn)) {
157
+ context.diagnostics.push((0, diagnostics_1.annotationRemoved)(node, annotations_1.AnnotationKind.TupleReturn));
158
+ }
150
159
  const [functionExpression, functionScope] = transformFunctionToExpression(context, node);
151
160
  // Handle named function expressions which reference themselves
152
161
  if (ts.isFunctionExpression(node) && node.name && functionScope.referencedSymbols) {
@@ -156,12 +165,12 @@ function transformFunctionLikeDeclaration(node, context) {
156
165
  const isReferenced = [...functionScope.referencedSymbols].some(([, nodes]) => nodes.some(n => { var _a; return ((_a = context.checker.getSymbolAtLocation(n)) === null || _a === void 0 ? void 0 : _a.valueDeclaration) === symbol.valueDeclaration; }));
157
166
  // Only wrap if the name is actually referenced inside the function
158
167
  if (isReferenced) {
159
- const nameIdentifier = identifier_1.transformIdentifier(context, node.name);
168
+ const nameIdentifier = (0, identifier_1.transformIdentifier)(context, node.name);
160
169
  // We cannot use transformToImmediatelyInvokedFunctionExpression() here because we need to transpile
161
170
  // the function first to determine if it's self-referencing. Fortunately, this does not cause issues
162
171
  // with var-arg optimization because the IIFE is just wrapping another function which will already push
163
172
  // another scope.
164
- return lua_ast_1.createImmediatelyInvokedFunctionExpression([lua.createVariableDeclarationStatement(nameIdentifier, functionExpression)], lua.cloneIdentifier(nameIdentifier));
173
+ return (0, lua_ast_1.createImmediatelyInvokedFunctionExpression)([lua.createVariableDeclarationStatement(nameIdentifier, functionExpression)], lua.cloneIdentifier(nameIdentifier));
165
174
  }
166
175
  }
167
176
  }
@@ -170,32 +179,35 @@ function transformFunctionLikeDeclaration(node, context) {
170
179
  exports.transformFunctionLikeDeclaration = transformFunctionLikeDeclaration;
171
180
  const transformFunctionDeclaration = (node, context) => {
172
181
  var _a;
182
+ if ((0, annotations_1.getNodeAnnotations)(node).has(annotations_1.AnnotationKind.TupleReturn)) {
183
+ context.diagnostics.push((0, diagnostics_1.annotationRemoved)(node, annotations_1.AnnotationKind.TupleReturn));
184
+ }
173
185
  // Don't transform functions without body (overload declarations)
174
186
  if (node.body === undefined) {
175
187
  return undefined;
176
188
  }
177
- if (export_1.hasDefaultExportModifier(node)) {
178
- return lua.createAssignmentStatement(lua.createTableIndexExpression(lua_ast_1.createExportsIdentifier(), export_1.createDefaultExportStringLiteral(node)), transformFunctionLikeDeclaration(node, context));
189
+ if ((0, export_1.hasDefaultExportModifier)(node)) {
190
+ return lua.createAssignmentStatement(lua.createTableIndexExpression((0, lua_ast_1.createExportsIdentifier)(), (0, export_1.createDefaultExportStringLiteral)(node)), transformFunctionLikeDeclaration(node, context));
179
191
  }
180
192
  const [functionExpression, functionScope] = transformFunctionToExpression(context, node);
181
193
  // Name being undefined without default export is a TypeScript error
182
- const name = node.name ? identifier_1.transformIdentifier(context, node.name) : lua.createAnonymousIdentifier();
194
+ const name = node.name ? (0, identifier_1.transformIdentifier)(context, node.name) : lua.createAnonymousIdentifier();
183
195
  // Remember symbols referenced in this function for hoisting later
184
196
  if (name.symbolId !== undefined) {
185
- const scope = scope_1.peekScope(context);
197
+ const scope = (0, scope_1.peekScope)(context);
186
198
  if (!scope.functionDefinitions) {
187
199
  scope.functionDefinitions = new Map();
188
200
  }
189
201
  const functionInfo = { referencedSymbols: (_a = functionScope.referencedSymbols) !== null && _a !== void 0 ? _a : new Map() };
190
202
  scope.functionDefinitions.set(name.symbolId, functionInfo);
191
203
  }
192
- return lua_ast_1.createLocalOrExportedOrGlobalDeclaration(context, name, functionExpression, node);
204
+ return (0, lua_ast_1.createLocalOrExportedOrGlobalDeclaration)(context, name, functionExpression, node);
193
205
  };
194
206
  exports.transformFunctionDeclaration = transformFunctionDeclaration;
195
207
  const transformYieldExpression = (expression, context) => {
196
208
  const parameters = expression.expression ? [context.transformExpression(expression.expression)] : [];
197
209
  return expression.asteriskToken
198
- ? lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.DelegatedYield, expression, ...parameters)
210
+ ? (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.DelegatedYield, expression, ...parameters)
199
211
  : lua.createCallExpression(lua.createTableIndexExpression(lua.createIdentifier("coroutine"), lua.createStringLiteral("yield")), parameters, expression);
200
212
  };
201
213
  exports.transformYieldExpression = transformYieldExpression;
@@ -4,9 +4,11 @@ exports.transformIdentifierExpression = exports.transformIdentifier = void 0;
4
4
  const ts = require("typescript");
5
5
  const lua = require("../../LuaAST");
6
6
  const builtins_1 = require("../builtins");
7
+ const promise_1 = require("../builtins/promise");
7
8
  const annotations_1 = require("../utils/annotations");
8
9
  const diagnostics_1 = require("../utils/diagnostics");
9
10
  const export_1 = require("../utils/export");
11
+ const lualib_1 = require("../utils/lualib");
10
12
  const safe_names_1 = require("../utils/safe-names");
11
13
  const symbols_1 = require("../utils/symbols");
12
14
  const multi_1 = require("./language-extensions/multi");
@@ -15,48 +17,52 @@ const range_1 = require("./language-extensions/range");
15
17
  const table_1 = require("./language-extensions/table");
16
18
  const vararg_1 = require("./language-extensions/vararg");
17
19
  function transformIdentifier(context, identifier) {
18
- if (multi_1.isMultiFunctionNode(context, identifier)) {
19
- context.diagnostics.push(diagnostics_1.invalidMultiFunctionUse(identifier));
20
+ if ((0, multi_1.isMultiFunctionNode)(context, identifier)) {
21
+ context.diagnostics.push((0, diagnostics_1.invalidMultiFunctionUse)(identifier));
20
22
  return lua.createAnonymousIdentifier(identifier);
21
23
  }
22
- if (operators_1.isOperatorMapping(context, identifier)) {
23
- context.diagnostics.push(diagnostics_1.invalidOperatorMappingUse(identifier));
24
+ if ((0, operators_1.isOperatorMapping)(context, identifier)) {
25
+ context.diagnostics.push((0, diagnostics_1.invalidOperatorMappingUse)(identifier));
24
26
  }
25
- if (table_1.isTableExtensionIdentifier(context, identifier)) {
26
- context.diagnostics.push(diagnostics_1.invalidTableExtensionUse(identifier));
27
+ if ((0, table_1.isTableExtensionIdentifier)(context, identifier)) {
28
+ context.diagnostics.push((0, diagnostics_1.invalidTableExtensionUse)(identifier));
27
29
  }
28
- if (range_1.isRangeFunctionNode(context, identifier)) {
29
- context.diagnostics.push(diagnostics_1.invalidRangeUse(identifier));
30
+ if ((0, range_1.isRangeFunctionNode)(context, identifier)) {
31
+ context.diagnostics.push((0, diagnostics_1.invalidRangeUse)(identifier));
30
32
  return lua.createAnonymousIdentifier(identifier);
31
33
  }
32
- if (vararg_1.isVarargConstantNode(context, identifier)) {
33
- context.diagnostics.push(diagnostics_1.invalidVarargUse(identifier));
34
+ if ((0, vararg_1.isVarargConstantNode)(context, identifier)) {
35
+ context.diagnostics.push((0, diagnostics_1.invalidVarargUse)(identifier));
34
36
  return lua.createAnonymousIdentifier(identifier);
35
37
  }
36
- if (annotations_1.isForRangeType(context, identifier)) {
37
- context.diagnostics.push(diagnostics_1.annotationRemoved(identifier, annotations_1.AnnotationKind.ForRange));
38
+ if ((0, annotations_1.isForRangeType)(context, identifier)) {
39
+ context.diagnostics.push((0, diagnostics_1.annotationRemoved)(identifier, annotations_1.AnnotationKind.ForRange));
38
40
  }
39
- const text = safe_names_1.hasUnsafeIdentifierName(context, identifier) ? safe_names_1.createSafeName(identifier.text) : identifier.text;
40
- const symbolId = symbols_1.getIdentifierSymbolId(context, identifier);
41
+ if ((0, promise_1.isPromiseClass)(context, identifier)) {
42
+ (0, lualib_1.importLuaLibFeature)(context, lualib_1.LuaLibFeature.Promise);
43
+ return (0, promise_1.createPromiseIdentifier)(identifier);
44
+ }
45
+ const text = (0, safe_names_1.hasUnsafeIdentifierName)(context, identifier) ? (0, safe_names_1.createSafeName)(identifier.text) : identifier.text;
46
+ const symbolId = (0, symbols_1.getIdentifierSymbolId)(context, identifier);
41
47
  return lua.createIdentifier(text, identifier, symbolId, identifier.text);
42
48
  }
43
49
  exports.transformIdentifier = transformIdentifier;
44
50
  const transformIdentifierExpression = (node, context) => {
45
51
  const symbol = context.checker.getSymbolAtLocation(node);
46
52
  if (symbol) {
47
- const exportScope = export_1.getSymbolExportScope(context, symbol);
53
+ const exportScope = (0, export_1.getSymbolExportScope)(context, symbol);
48
54
  if (exportScope) {
49
55
  const name = symbol.name;
50
- const text = safe_names_1.hasUnsafeIdentifierName(context, node) ? safe_names_1.createSafeName(name) : name;
51
- const symbolId = symbols_1.getIdentifierSymbolId(context, node);
56
+ const text = (0, safe_names_1.hasUnsafeIdentifierName)(context, node) ? (0, safe_names_1.createSafeName)(name) : name;
57
+ const symbolId = (0, symbols_1.getIdentifierSymbolId)(context, node);
52
58
  const identifier = lua.createIdentifier(text, node, symbolId, name);
53
- return export_1.createExportedIdentifier(context, identifier, exportScope);
59
+ return (0, export_1.createExportedIdentifier)(context, identifier, exportScope);
54
60
  }
55
61
  }
56
62
  if (node.originalKeywordKind === ts.SyntaxKind.UndefinedKeyword) {
57
63
  return lua.createNilLiteral();
58
64
  }
59
- const builtinResult = builtins_1.transformBuiltinIdentifierExpression(context, node);
65
+ const builtinResult = (0, builtins_1.transformBuiltinIdentifierExpression)(context, node);
60
66
  if (builtinResult) {
61
67
  return builtinResult;
62
68
  }
@@ -33,14 +33,15 @@ const typeof_1 = require("./typeof");
33
33
  const typescript_1 = require("./typescript");
34
34
  const unary_expression_1 = require("./unary-expression");
35
35
  const variable_declaration_1 = require("./variable-declaration");
36
- const jsx_1 = require("./jsx/jsx");
36
+ const async_await_1 = require("./async-await");
37
+ const void_1 = require("./void");
37
38
  const transformEmptyStatement = () => undefined;
38
39
  const transformParenthesizedExpression = (node, context) => context.transformExpression(node.expression);
39
40
  exports.standardVisitors = {
40
41
  ...literal_1.literalVisitors,
41
42
  ...typescript_1.typescriptVisitors,
42
- ...jsx_1.jsxVisitors,
43
43
  [ts.SyntaxKind.ArrowFunction]: function_1.transformFunctionLikeDeclaration,
44
+ [ts.SyntaxKind.AwaitExpression]: async_await_1.transformAwaitExpression,
44
45
  [ts.SyntaxKind.BinaryExpression]: binary_expression_1.transformBinaryExpression,
45
46
  [ts.SyntaxKind.Block]: block_1.transformBlock,
46
47
  [ts.SyntaxKind.BreakStatement]: break_continue_1.transformBreakStatement,
@@ -88,5 +89,6 @@ exports.standardVisitors = {
88
89
  [ts.SyntaxKind.VariableStatement]: variable_declaration_1.transformVariableStatement,
89
90
  [ts.SyntaxKind.WhileStatement]: do_while_1.transformWhileStatement,
90
91
  [ts.SyntaxKind.YieldExpression]: function_1.transformYieldExpression,
92
+ [ts.SyntaxKind.VoidExpression]: void_1.transformVoidExpression,
91
93
  };
92
94
  //# sourceMappingURL=index.js.map
@@ -30,12 +30,12 @@ function transformForOfMultiIterableStatement(context, statement, block) {
30
30
  if (ts.isVariableDeclarationList(statement.initializer)) {
31
31
  // Variables declared in for loop
32
32
  // for ${initializer} in ${iterable} do
33
- const binding = utils_1.getVariableDeclarationBinding(context, statement.initializer);
33
+ const binding = (0, utils_1.getVariableDeclarationBinding)(context, statement.initializer);
34
34
  if (ts.isArrayBindingPattern(binding)) {
35
- identifiers = binding.elements.map(e => variable_declaration_1.transformArrayBindingElement(context, e));
35
+ identifiers = binding.elements.map(e => (0, variable_declaration_1.transformArrayBindingElement)(context, e));
36
36
  }
37
37
  else {
38
- context.diagnostics.push(diagnostics_1.invalidMultiIterableWithoutDestructuring(binding));
38
+ context.diagnostics.push((0, diagnostics_1.invalidMultiIterableWithoutDestructuring)(binding));
39
39
  }
40
40
  }
41
41
  else if (ts.isArrayLiteralExpression(statement.initializer)) {
@@ -44,11 +44,11 @@ function transformForOfMultiIterableStatement(context, statement, block) {
44
44
  // ${initializer} = ____value0
45
45
  identifiers = statement.initializer.elements.map((_, i) => lua.createIdentifier(`____value${i}`));
46
46
  if (identifiers.length > 0) {
47
- block.statements.unshift(lua.createAssignmentStatement(statement.initializer.elements.map(e => utils_2.cast(context.transformExpression(e), lua.isAssignmentLeftHandSideExpression)), identifiers));
47
+ block.statements.unshift(lua.createAssignmentStatement(statement.initializer.elements.map(e => (0, utils_2.cast)(context.transformExpression(e), lua.isAssignmentLeftHandSideExpression)), identifiers));
48
48
  }
49
49
  }
50
50
  else {
51
- context.diagnostics.push(diagnostics_1.invalidMultiIterableWithoutDestructuring(statement.initializer));
51
+ context.diagnostics.push((0, diagnostics_1.invalidMultiIterableWithoutDestructuring)(statement.initializer));
52
52
  }
53
53
  if (identifiers.length === 0) {
54
54
  identifiers.push(lua.createAnonymousIdentifier());
@@ -58,11 +58,11 @@ function transformForOfMultiIterableStatement(context, statement, block) {
58
58
  function transformForOfIterableStatement(context, statement, block) {
59
59
  var _a;
60
60
  const type = context.checker.getTypeAtLocation(statement.expression);
61
- if (((_a = type.aliasTypeArguments) === null || _a === void 0 ? void 0 : _a.length) === 2 && multi_1.isMultiReturnType(type.aliasTypeArguments[0])) {
61
+ if (((_a = type.aliasTypeArguments) === null || _a === void 0 ? void 0 : _a.length) === 2 && (0, multi_1.isMultiReturnType)(type.aliasTypeArguments[0])) {
62
62
  return transformForOfMultiIterableStatement(context, statement, block);
63
63
  }
64
64
  const luaIterator = context.transformExpression(statement.expression);
65
- const identifier = utils_1.transformForInitializer(context, statement.initializer, block);
65
+ const identifier = (0, utils_1.transformForInitializer)(context, statement.initializer, block);
66
66
  return lua.createForInStatement(block, [identifier], [luaIterator], statement);
67
67
  }
68
68
  exports.transformForOfIterableStatement = transformForOfIterableStatement;