typescript-to-lua 0.41.2 → 1.1.0

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 (134) hide show
  1. package/CHANGELOG.md +46 -0
  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 +41 -5
  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/report.js +1 -1
  10. package/dist/cli/tsconfig.js +4 -4
  11. package/dist/lualib/ArrayJoin.lua +2 -4
  12. package/dist/lualib/Await.lua +59 -0
  13. package/dist/lualib/Iterator.lua +1 -5
  14. package/dist/lualib/NumberToString.lua +4 -8
  15. package/dist/lualib/OptionalMethodCall.lua +3 -1
  16. package/dist/lualib/ParseInt.lua +1 -3
  17. package/dist/lualib/Promise.lua +172 -0
  18. package/dist/lualib/PromiseAll.lua +44 -0
  19. package/dist/lualib/PromiseAllSettled.lua +48 -0
  20. package/dist/lualib/PromiseAny.lua +41 -0
  21. package/dist/lualib/PromiseRace.lua +28 -0
  22. package/dist/lualib/SourceMapTraceBack.lua +18 -8
  23. package/dist/lualib/StringConcat.lua +1 -1
  24. package/dist/lualib/StringPadEnd.lua +7 -11
  25. package/dist/lualib/StringPadStart.lua +8 -12
  26. package/dist/lualib/StringReplace.lua +8 -13
  27. package/dist/lualib/StringReplaceAll.lua +35 -0
  28. package/dist/lualib/StringSubstring.lua +1 -1
  29. package/dist/lualib/lualib_bundle.lua +660 -239
  30. package/dist/transformation/builtins/array.js +29 -29
  31. package/dist/transformation/builtins/console.js +2 -2
  32. package/dist/transformation/builtins/function.js +9 -9
  33. package/dist/transformation/builtins/global.js +8 -8
  34. package/dist/transformation/builtins/index.js +35 -32
  35. package/dist/transformation/builtins/math.js +4 -4
  36. package/dist/transformation/builtins/number.js +7 -7
  37. package/dist/transformation/builtins/object.js +11 -11
  38. package/dist/transformation/builtins/promise.d.ts +7 -0
  39. package/dist/transformation/builtins/promise.js +46 -0
  40. package/dist/transformation/builtins/string.js +32 -30
  41. package/dist/transformation/builtins/symbol.js +3 -3
  42. package/dist/transformation/context/context.js +5 -5
  43. package/dist/transformation/index.js +1 -1
  44. package/dist/transformation/utils/annotations.d.ts +1 -4
  45. package/dist/transformation/utils/annotations.js +1 -32
  46. package/dist/transformation/utils/assignment-validation.js +8 -7
  47. package/dist/transformation/utils/diagnostics.d.ts +3 -0
  48. package/dist/transformation/utils/diagnostics.js +6 -5
  49. package/dist/transformation/utils/export.js +4 -4
  50. package/dist/transformation/utils/function-context.js +19 -13
  51. package/dist/transformation/utils/lua-ast.js +18 -19
  52. package/dist/transformation/utils/lualib.js +1 -1
  53. package/dist/transformation/utils/safe-names.js +5 -5
  54. package/dist/transformation/utils/scope.d.ts +6 -0
  55. package/dist/transformation/utils/scope.js +70 -40
  56. package/dist/transformation/utils/symbols.js +6 -6
  57. package/dist/transformation/utils/transform.js +3 -3
  58. package/dist/transformation/utils/typescript/nodes.d.ts +2 -0
  59. package/dist/transformation/utils/typescript/nodes.js +21 -1
  60. package/dist/transformation/visitors/access.js +25 -19
  61. package/dist/transformation/visitors/async-await.d.ts +6 -0
  62. package/dist/transformation/visitors/async-await.js +38 -0
  63. package/dist/transformation/visitors/binary-expression/assignments.js +32 -31
  64. package/dist/transformation/visitors/binary-expression/bit.js +4 -4
  65. package/dist/transformation/visitors/binary-expression/compound.js +18 -18
  66. package/dist/transformation/visitors/binary-expression/destructuring-assignments.js +17 -17
  67. package/dist/transformation/visitors/binary-expression/index.js +22 -20
  68. package/dist/transformation/visitors/block.js +6 -6
  69. package/dist/transformation/visitors/break-continue.js +4 -9
  70. package/dist/transformation/visitors/call.js +38 -38
  71. package/dist/transformation/visitors/class/decorators.js +3 -3
  72. package/dist/transformation/visitors/class/index.js +34 -34
  73. package/dist/transformation/visitors/class/members/accessors.js +6 -6
  74. package/dist/transformation/visitors/class/members/constructor.js +7 -7
  75. package/dist/transformation/visitors/class/members/fields.js +6 -6
  76. package/dist/transformation/visitors/class/members/method.js +6 -6
  77. package/dist/transformation/visitors/class/new.js +13 -13
  78. package/dist/transformation/visitors/class/setup.js +11 -11
  79. package/dist/transformation/visitors/class/utils.js +2 -2
  80. package/dist/transformation/visitors/conditional.js +6 -6
  81. package/dist/transformation/visitors/delete.js +4 -4
  82. package/dist/transformation/visitors/enum.js +8 -8
  83. package/dist/transformation/visitors/errors.js +30 -31
  84. package/dist/transformation/visitors/expression-statement.js +10 -6
  85. package/dist/transformation/visitors/function.js +33 -21
  86. package/dist/transformation/visitors/identifier.js +25 -19
  87. package/dist/transformation/visitors/index.js +4 -2
  88. package/dist/transformation/visitors/language-extensions/iterable.js +7 -7
  89. package/dist/transformation/visitors/language-extensions/multi.d.ts +2 -1
  90. package/dist/transformation/visitors/language-extensions/multi.js +8 -4
  91. package/dist/transformation/visitors/language-extensions/operators.js +6 -6
  92. package/dist/transformation/visitors/language-extensions/range.js +6 -6
  93. package/dist/transformation/visitors/language-extensions/table.js +5 -5
  94. package/dist/transformation/visitors/literal.d.ts +1 -2
  95. package/dist/transformation/visitors/literal.js +19 -42
  96. package/dist/transformation/visitors/loops/do-while.js +2 -2
  97. package/dist/transformation/visitors/loops/for-in.js +4 -4
  98. package/dist/transformation/visitors/loops/for-of.js +13 -13
  99. package/dist/transformation/visitors/loops/for.js +3 -3
  100. package/dist/transformation/visitors/loops/utils.js +9 -9
  101. package/dist/transformation/visitors/modules/export.js +13 -13
  102. package/dist/transformation/visitors/modules/import.js +10 -10
  103. package/dist/transformation/visitors/namespace.js +13 -13
  104. package/dist/transformation/visitors/return.d.ts +1 -0
  105. package/dist/transformation/visitors/return.js +41 -49
  106. package/dist/transformation/visitors/sourceFile.js +8 -8
  107. package/dist/transformation/visitors/spread.js +16 -13
  108. package/dist/transformation/visitors/switch.js +132 -30
  109. package/dist/transformation/visitors/template.js +5 -5
  110. package/dist/transformation/visitors/typeof.js +2 -2
  111. package/dist/transformation/visitors/typescript.js +1 -1
  112. package/dist/transformation/visitors/unary-expression.js +9 -9
  113. package/dist/transformation/visitors/variable-declaration.js +29 -30
  114. package/dist/transformation/visitors/void.d.ts +6 -0
  115. package/dist/transformation/visitors/void.js +23 -0
  116. package/dist/transpilation/bundle.d.ts +3 -0
  117. package/dist/transpilation/bundle.js +56 -13
  118. package/dist/transpilation/diagnostics.js +3 -3
  119. package/dist/transpilation/index.js +2 -2
  120. package/dist/transpilation/output-collector.js +2 -2
  121. package/dist/transpilation/plugins.js +1 -1
  122. package/dist/transpilation/resolve.js +28 -14
  123. package/dist/transpilation/transformers.d.ts +1 -0
  124. package/dist/transpilation/transformers.js +61 -25
  125. package/dist/transpilation/transpile.js +7 -7
  126. package/dist/transpilation/transpiler.js +13 -11
  127. package/dist/transpilation/utils.js +3 -2
  128. package/dist/tstl.js +9 -9
  129. package/dist/utils.js +2 -2
  130. package/package.json +16 -13
  131. package/dist/transformation/visitors/jsx/jsx.d.ts +0 -9
  132. package/dist/transformation/visitors/jsx/jsx.js +0 -237
  133. package/dist/transformation/visitors/jsx/xhtml.d.ts +0 -3
  134. package/dist/transformation/visitors/jsx/xhtml.js +0 -260
@@ -31,7 +31,7 @@ function transformBitOperatorToLuaOperator(context, node, operator) {
31
31
  case ts.SyntaxKind.LessThanLessThanToken:
32
32
  return lua.SyntaxKind.BitwiseLeftShiftOperator;
33
33
  case ts.SyntaxKind.GreaterThanGreaterThanToken:
34
- context.diagnostics.push(diagnostics_1.unsupportedRightShiftOperator(node));
34
+ context.diagnostics.push((0, diagnostics_1.unsupportedRightShiftOperator)(node));
35
35
  case ts.SyntaxKind.GreaterThanGreaterThanGreaterThanToken:
36
36
  return lua.SyntaxKind.BitwiseRightShiftOperator;
37
37
  }
@@ -40,7 +40,7 @@ function transformBinaryBitOperation(context, node, left, right, operator) {
40
40
  switch (context.luaTarget) {
41
41
  case CompilerOptions_1.LuaTarget.Universal:
42
42
  case CompilerOptions_1.LuaTarget.Lua51:
43
- context.diagnostics.push(diagnostics_1.unsupportedForTarget(node, "Bitwise operations", CompilerOptions_1.LuaTarget.Lua51));
43
+ context.diagnostics.push((0, diagnostics_1.unsupportedForTarget)(node, "Bitwise operations", CompilerOptions_1.LuaTarget.Lua51));
44
44
  case CompilerOptions_1.LuaTarget.LuaJIT:
45
45
  return transformBinaryBitLibOperation(node, left, right, operator, "bit");
46
46
  case CompilerOptions_1.LuaTarget.Lua52:
@@ -58,7 +58,7 @@ function transformUnaryBitLibOperation(node, expression, operator, lib) {
58
58
  bitFunction = "bnot";
59
59
  break;
60
60
  default:
61
- utils_1.assertNever(operator);
61
+ (0, utils_1.assertNever)(operator);
62
62
  }
63
63
  return lua.createCallExpression(lua.createTableIndexExpression(lua.createIdentifier(lib), lua.createStringLiteral(bitFunction)), [expression], node);
64
64
  }
@@ -66,7 +66,7 @@ function transformUnaryBitOperation(context, node, expression, operator) {
66
66
  switch (context.luaTarget) {
67
67
  case CompilerOptions_1.LuaTarget.Universal:
68
68
  case CompilerOptions_1.LuaTarget.Lua51:
69
- context.diagnostics.push(diagnostics_1.unsupportedForTarget(node, "Bitwise operations", CompilerOptions_1.LuaTarget.Lua51));
69
+ context.diagnostics.push((0, diagnostics_1.unsupportedForTarget)(node, "Bitwise operations", CompilerOptions_1.LuaTarget.Lua51));
70
70
  case CompilerOptions_1.LuaTarget.LuaJIT:
71
71
  return transformUnaryBitLibOperation(node, expression, operator, "bit");
72
72
  case CompilerOptions_1.LuaTarget.Lua52:
@@ -11,9 +11,9 @@ const assignments_1 = require("./assignments");
11
11
  // If expression is property/element access with possible effects from being evaluated, returns separated object and index expressions.
12
12
  function parseAccessExpressionWithEvaluationEffects(context, node) {
13
13
  if (ts.isElementAccessExpression(node) &&
14
- (typescript_1.isExpressionWithEvaluationEffect(node.expression) || typescript_1.isExpressionWithEvaluationEffect(node.argumentExpression))) {
14
+ ((0, typescript_1.isExpressionWithEvaluationEffect)(node.expression) || (0, typescript_1.isExpressionWithEvaluationEffect)(node.argumentExpression))) {
15
15
  const type = context.checker.getTypeAtLocation(node.expression);
16
- if (typescript_1.isArrayType(context, type)) {
16
+ if ((0, typescript_1.isArrayType)(context, type)) {
17
17
  // Offset arrays by one
18
18
  const oneLit = ts.factory.createNumericLiteral("1");
19
19
  const exp = ts.factory.createParenthesizedExpression(node.argumentExpression);
@@ -24,7 +24,7 @@ function parseAccessExpressionWithEvaluationEffects(context, node) {
24
24
  return [node.expression, node.argumentExpression];
25
25
  }
26
26
  }
27
- else if (ts.isPropertyAccessExpression(node) && typescript_1.isExpressionWithEvaluationEffect(node.expression)) {
27
+ else if (ts.isPropertyAccessExpression(node) && (0, typescript_1.isExpressionWithEvaluationEffect)(node.expression)) {
28
28
  return [node.expression, ts.factory.createStringLiteral(node.name.text)];
29
29
  }
30
30
  return [];
@@ -52,7 +52,7 @@ exports.isCompoundAssignmentToken = isCompoundAssignmentToken;
52
52
  const unwrapCompoundAssignmentToken = (token) => compoundToAssignmentTokens[token];
53
53
  exports.unwrapCompoundAssignmentToken = unwrapCompoundAssignmentToken;
54
54
  function transformCompoundAssignment(context, expression, lhs, rhs, operator, isPostfix) {
55
- const left = utils_1.cast(context.transformExpression(lhs), lua.isAssignmentLeftHandSideExpression);
55
+ const left = (0, utils_1.cast)(context.transformExpression(lhs), lua.isAssignmentLeftHandSideExpression);
56
56
  const right = context.transformExpression(rhs);
57
57
  const [objExpression, indexExpression] = parseAccessExpressionWithEvaluationEffects(context, lhs);
58
58
  if (objExpression && indexExpression) {
@@ -69,13 +69,13 @@ function transformCompoundAssignment(context, expression, lhs, rhs, operator, is
69
69
  // local ____tmp = ____obj[____index];
70
70
  // ____obj[____index] = ____tmp ${replacementOperator} ${right};
71
71
  tmpDeclaration = lua.createVariableDeclarationStatement(tmp, accessExpression);
72
- const operatorExpression = binary_expression_1.transformBinaryOperation(context, tmp, right, operator, expression);
72
+ const operatorExpression = (0, binary_expression_1.transformBinaryOperation)(context, tmp, right, operator, expression);
73
73
  assignStatement = lua.createAssignmentStatement(accessExpression, operatorExpression);
74
74
  }
75
75
  else {
76
76
  // local ____tmp = ____obj[____index] ${replacementOperator} ${right};
77
77
  // ____obj[____index] = ____tmp;
78
- const operatorExpression = binary_expression_1.transformBinaryOperation(context, accessExpression, right, operator, expression);
78
+ const operatorExpression = (0, binary_expression_1.transformBinaryOperation)(context, accessExpression, right, operator, expression);
79
79
  tmpDeclaration = lua.createVariableDeclarationStatement(tmp, operatorExpression);
80
80
  assignStatement = lua.createAssignmentStatement(accessExpression, tmp);
81
81
  }
@@ -89,8 +89,8 @@ function transformCompoundAssignment(context, expression, lhs, rhs, operator, is
89
89
  // return ____tmp
90
90
  const tmpIdentifier = lua.createIdentifier("____tmp");
91
91
  const tmpDeclaration = lua.createVariableDeclarationStatement(tmpIdentifier, left);
92
- const operatorExpression = binary_expression_1.transformBinaryOperation(context, tmpIdentifier, right, operator, expression);
93
- const assignStatements = assignments_1.transformAssignment(context, lhs, operatorExpression);
92
+ const operatorExpression = (0, binary_expression_1.transformBinaryOperation)(context, tmpIdentifier, right, operator, expression);
93
+ const assignStatements = (0, assignments_1.transformAssignment)(context, lhs, operatorExpression);
94
94
  return { statements: [tmpDeclaration, ...assignStatements], result: tmpIdentifier };
95
95
  }
96
96
  else if (ts.isPropertyAccessExpression(lhs) || ts.isElementAccessExpression(lhs)) {
@@ -99,9 +99,9 @@ function transformCompoundAssignment(context, expression, lhs, rhs, operator, is
99
99
  // ${left} = ____tmp;
100
100
  // return ____tmp
101
101
  const tmpIdentifier = lua.createIdentifier("____tmp");
102
- const operatorExpression = binary_expression_1.transformBinaryOperation(context, left, right, operator, expression);
102
+ const operatorExpression = (0, binary_expression_1.transformBinaryOperation)(context, left, right, operator, expression);
103
103
  const tmpDeclaration = lua.createVariableDeclarationStatement(tmpIdentifier, operatorExpression);
104
- const assignStatements = assignments_1.transformAssignment(context, lhs, tmpIdentifier);
104
+ const assignStatements = (0, assignments_1.transformAssignment)(context, lhs, tmpIdentifier);
105
105
  if (isSetterSkippingCompoundAssignmentOperator(operator)) {
106
106
  const statements = [
107
107
  tmpDeclaration,
@@ -114,8 +114,8 @@ function transformCompoundAssignment(context, expression, lhs, rhs, operator, is
114
114
  else {
115
115
  // Simple expressions
116
116
  // ${left} = ${right}; return ${right}
117
- const operatorExpression = binary_expression_1.transformBinaryOperation(context, left, right, operator, expression);
118
- const statements = assignments_1.transformAssignment(context, lhs, operatorExpression);
117
+ const operatorExpression = (0, binary_expression_1.transformBinaryOperation)(context, left, right, operator, expression);
118
+ const statements = (0, assignments_1.transformAssignment)(context, lhs, operatorExpression);
119
119
  return { statements, result: left };
120
120
  }
121
121
  }
@@ -123,11 +123,11 @@ exports.transformCompoundAssignment = transformCompoundAssignment;
123
123
  function transformCompoundAssignmentExpression(context, expression,
124
124
  // TODO: Change type to ts.LeftHandSideExpression?
125
125
  lhs, rhs, operator, isPostfix) {
126
- return transform_1.transformToImmediatelyInvokedFunctionExpression(context, () => transformCompoundAssignment(context, expression, lhs, rhs, operator, isPostfix), expression);
126
+ return (0, transform_1.transformToImmediatelyInvokedFunctionExpression)(context, () => transformCompoundAssignment(context, expression, lhs, rhs, operator, isPostfix), expression);
127
127
  }
128
128
  exports.transformCompoundAssignmentExpression = transformCompoundAssignmentExpression;
129
129
  function transformCompoundAssignmentStatement(context, node, lhs, rhs, operator) {
130
- const left = utils_1.cast(context.transformExpression(lhs), lua.isAssignmentLeftHandSideExpression);
130
+ const left = (0, utils_1.cast)(context.transformExpression(lhs), lua.isAssignmentLeftHandSideExpression);
131
131
  const right = context.transformExpression(rhs);
132
132
  const [objExpression, indexExpression] = parseAccessExpressionWithEvaluationEffects(context, lhs);
133
133
  if (objExpression && indexExpression) {
@@ -144,7 +144,7 @@ function transformCompoundAssignmentStatement(context, node, lhs, rhs, operator)
144
144
  ...transformSetterSkippingCompoundAssignment(context, accessExpression, operator, rhs, node),
145
145
  ];
146
146
  }
147
- const operatorExpression = binary_expression_1.transformBinaryOperation(context, accessExpression, right, operator, node);
147
+ const operatorExpression = (0, binary_expression_1.transformBinaryOperation)(context, accessExpression, right, operator, node);
148
148
  const assignStatement = lua.createAssignmentStatement(accessExpression, operatorExpression);
149
149
  return [objAndIndexDeclaration, assignStatement];
150
150
  }
@@ -155,8 +155,8 @@ function transformCompoundAssignmentStatement(context, node, lhs, rhs, operator)
155
155
  }
156
156
  // Simple statements
157
157
  // ${left} = ${left} ${replacementOperator} ${right}
158
- const operatorExpression = binary_expression_1.transformBinaryOperation(context, left, right, operator, node);
159
- return assignments_1.transformAssignment(context, lhs, operatorExpression);
158
+ const operatorExpression = (0, binary_expression_1.transformBinaryOperation)(context, left, right, operator, node);
159
+ return (0, assignments_1.transformAssignment)(context, lhs, operatorExpression);
160
160
  }
161
161
  }
162
162
  exports.transformCompoundAssignmentStatement = transformCompoundAssignmentStatement;
@@ -178,7 +178,7 @@ function transformSetterSkippingCompoundAssignment(context, lhs, operator, rhs,
178
178
  condition = lua.createBinaryExpression(lhs, lua.createNilLiteral(), lua.SyntaxKind.EqualityOperator);
179
179
  }
180
180
  else {
181
- utils_1.assertNever(operator);
181
+ (0, utils_1.assertNever)(operator);
182
182
  }
183
183
  // if condition then lhs = rhs end
184
184
  return [
@@ -13,7 +13,7 @@ function isArrayLength(context, expression) {
13
13
  return false;
14
14
  }
15
15
  const type = context.checker.getTypeAtLocation(expression.expression);
16
- if (!typescript_1.isArrayType(context, type)) {
16
+ if (!(0, typescript_1.isArrayType)(context, type)) {
17
17
  return false;
18
18
  }
19
19
  const name = ts.isPropertyAccessExpression(expression)
@@ -49,8 +49,8 @@ function transformArrayLiteralAssignmentPattern(context, node, root) {
49
49
  const assignedVariable = lua.createIdentifier("____bindingAssignmentValue");
50
50
  const assignedVariableDeclaration = lua.createVariableDeclarationStatement(assignedVariable, indexedRoot);
51
51
  const nilCondition = lua.createBinaryExpression(assignedVariable, lua.createNilLiteral(), lua.SyntaxKind.EqualityOperator);
52
- const defaultAssignmentStatements = assignments_1.transformAssignment(context, element.left, context.transformExpression(element.right));
53
- const elseAssignmentStatements = assignments_1.transformAssignment(context, element.left, assignedVariable);
52
+ const defaultAssignmentStatements = (0, assignments_1.transformAssignment)(context, element.left, context.transformExpression(element.right));
53
+ const elseAssignmentStatements = (0, assignments_1.transformAssignment)(context, element.left, assignedVariable);
54
54
  const ifBlock = lua.createBlock(defaultAssignmentStatements);
55
55
  const elseBlock = lua.createBlock(elseAssignmentStatements);
56
56
  const ifStatement = lua.createIfStatement(nilCondition, ifBlock, elseBlock, node);
@@ -58,14 +58,14 @@ function transformArrayLiteralAssignmentPattern(context, node, root) {
58
58
  case ts.SyntaxKind.Identifier:
59
59
  case ts.SyntaxKind.PropertyAccessExpression:
60
60
  case ts.SyntaxKind.ElementAccessExpression:
61
- return assignments_1.transformAssignment(context, element, indexedRoot);
61
+ return (0, assignments_1.transformAssignment)(context, element, indexedRoot);
62
62
  case ts.SyntaxKind.SpreadElement:
63
63
  if (index !== node.elements.length - 1) {
64
64
  // TypeScript error
65
65
  return [];
66
66
  }
67
- const restElements = lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArraySlice, undefined, root, lua.createNumericLiteral(index));
68
- return assignments_1.transformAssignment(context, element.expression, restElements);
67
+ const restElements = (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArraySlice, undefined, root, lua.createNumericLiteral(index));
68
+ return (0, assignments_1.transformAssignment)(context, element.expression, restElements);
69
69
  case ts.SyntaxKind.OmittedExpression:
70
70
  return [];
71
71
  default:
@@ -93,23 +93,23 @@ function transformObjectLiteralAssignmentPattern(context, node, root) {
93
93
  // TypeScript error
94
94
  break;
95
95
  default:
96
- utils_1.assertNever(property);
96
+ (0, utils_1.assertNever)(property);
97
97
  }
98
98
  }
99
99
  return result;
100
100
  }
101
101
  function transformShorthandPropertyAssignment(context, node, root) {
102
102
  const result = [];
103
- const assignmentVariableName = assignments_1.transformAssignmentLeftHandSideExpression(context, node.name);
103
+ const assignmentVariableName = (0, assignments_1.transformAssignmentLeftHandSideExpression)(context, node.name);
104
104
  const extractionIndex = lua.createStringLiteral(node.name.text);
105
- const variableExtractionAssignmentStatements = assignments_1.transformAssignment(context, node.name, lua.createTableIndexExpression(root, extractionIndex));
105
+ const variableExtractionAssignmentStatements = (0, assignments_1.transformAssignment)(context, node.name, lua.createTableIndexExpression(root, extractionIndex));
106
106
  result.push(...variableExtractionAssignmentStatements);
107
107
  const defaultInitializer = node.objectAssignmentInitializer
108
108
  ? context.transformExpression(node.objectAssignmentInitializer)
109
109
  : undefined;
110
110
  if (defaultInitializer) {
111
111
  const nilCondition = lua.createBinaryExpression(assignmentVariableName, lua.createNilLiteral(), lua.SyntaxKind.EqualityOperator);
112
- const assignmentStatements = assignments_1.transformAssignment(context, node.name, defaultInitializer);
112
+ const assignmentStatements = (0, assignments_1.transformAssignment)(context, node.name, defaultInitializer);
113
113
  const ifBlock = lua.createBlock(assignmentStatements);
114
114
  result.push(lua.createIfStatement(nilCondition, ifBlock, undefined, node));
115
115
  }
@@ -117,8 +117,8 @@ function transformShorthandPropertyAssignment(context, node, root) {
117
117
  }
118
118
  function transformPropertyAssignment(context, node, root) {
119
119
  const result = [];
120
- if (typescript_1.isAssignmentPattern(node.initializer)) {
121
- const propertyAccessString = literal_1.transformPropertyName(context, node.name);
120
+ if ((0, typescript_1.isAssignmentPattern)(node.initializer)) {
121
+ const propertyAccessString = (0, literal_1.transformPropertyName)(context, node.name);
122
122
  const newRootAccess = lua.createTableIndexExpression(root, propertyAccessString);
123
123
  if (ts.isObjectLiteralExpression(node.initializer)) {
124
124
  return transformObjectLiteralAssignmentPattern(context, node.initializer, newRootAccess);
@@ -128,14 +128,14 @@ function transformPropertyAssignment(context, node, root) {
128
128
  }
129
129
  }
130
130
  const leftExpression = ts.isBinaryExpression(node.initializer) ? node.initializer.left : node.initializer;
131
- const variableToExtract = literal_1.transformPropertyName(context, node.name);
131
+ const variableToExtract = (0, literal_1.transformPropertyName)(context, node.name);
132
132
  const extractingExpression = lua.createTableIndexExpression(root, variableToExtract);
133
- const destructureAssignmentStatements = assignments_1.transformAssignment(context, leftExpression, extractingExpression);
133
+ const destructureAssignmentStatements = (0, assignments_1.transformAssignment)(context, leftExpression, extractingExpression);
134
134
  result.push(...destructureAssignmentStatements);
135
135
  if (ts.isBinaryExpression(node.initializer)) {
136
136
  const assignmentLeftHandSide = context.transformExpression(node.initializer.left);
137
137
  const nilCondition = lua.createBinaryExpression(assignmentLeftHandSide, lua.createNilLiteral(), lua.SyntaxKind.EqualityOperator);
138
- const ifBlock = lua.createBlock(assignments_1.transformAssignmentStatement(context, node.initializer));
138
+ const ifBlock = lua.createBlock((0, assignments_1.transformAssignmentStatement)(context, node.initializer));
139
139
  result.push(lua.createIfStatement(nilCondition, ifBlock, undefined, node));
140
140
  }
141
141
  return result;
@@ -152,7 +152,7 @@ function transformSpreadAssignment(context, node, root, properties) {
152
152
  usedProperties.push(lua.createTableFieldExpression(lua.createBooleanLiteral(true), name));
153
153
  }
154
154
  }
155
- const extractingExpression = lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ObjectRest, undefined, root, lua.createTableExpression(usedProperties));
156
- return assignments_1.transformAssignment(context, node.expression, extractingExpression);
155
+ const extractingExpression = (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ObjectRest, undefined, root, lua.createTableExpression(usedProperties));
156
+ return (0, assignments_1.transformAssignment)(context, node.expression, extractingExpression);
157
157
  }
158
158
  //# sourceMappingURL=destructuring-assignments.js.map
@@ -31,11 +31,11 @@ const simpleOperatorsToLua = {
31
31
  [ts.SyntaxKind.ExclamationEqualsEqualsToken]: lua.SyntaxKind.InequalityOperator,
32
32
  };
33
33
  function transformBinaryOperation(context, left, right, operator, node) {
34
- if (bit_1.isBitOperator(operator)) {
35
- return bit_1.transformBinaryBitOperation(context, node, left, right, operator);
34
+ if ((0, bit_1.isBitOperator)(operator)) {
35
+ return (0, bit_1.transformBinaryBitOperation)(context, node, left, right, operator);
36
36
  }
37
37
  if (operator === ts.SyntaxKind.QuestionQuestionToken) {
38
- utils_1.assert(ts.isBinaryExpression(node));
38
+ (0, utils_1.assert)(ts.isBinaryExpression(node));
39
39
  return transformNullishCoalescingExpression(context, node, left, right);
40
40
  }
41
41
  let luaOperator = simpleOperatorsToLua[operator];
@@ -43,9 +43,11 @@ function transformBinaryOperation(context, left, right, operator, node) {
43
43
  if (operator === ts.SyntaxKind.PlusToken && ts.isBinaryExpression(node)) {
44
44
  const typeLeft = context.checker.getTypeAtLocation(node.left);
45
45
  const typeRight = context.checker.getTypeAtLocation(node.right);
46
- if (typescript_1.isStringType(context, typeLeft) || typescript_1.isStringType(context, typeRight)) {
47
- left = lua_ast_1.wrapInToStringForConcat(left);
48
- right = lua_ast_1.wrapInToStringForConcat(right);
46
+ const isLeftString = (0, typescript_1.isStringType)(context, typeLeft);
47
+ const isRightString = (0, typescript_1.isStringType)(context, typeRight);
48
+ if (isLeftString || isRightString) {
49
+ left = isLeftString ? left : (0, lua_ast_1.wrapInToStringForConcat)(left);
50
+ right = isRightString ? right : (0, lua_ast_1.wrapInToStringForConcat)(right);
49
51
  luaOperator = lua.SyntaxKind.ConcatOperator;
50
52
  }
51
53
  }
@@ -54,17 +56,17 @@ function transformBinaryOperation(context, left, right, operator, node) {
54
56
  exports.transformBinaryOperation = transformBinaryOperation;
55
57
  const transformBinaryExpression = (node, context) => {
56
58
  const operator = node.operatorToken.kind;
57
- const typeOfResult = typeof_1.transformTypeOfBinaryExpression(context, node);
59
+ const typeOfResult = (0, typeof_1.transformTypeOfBinaryExpression)(context, node);
58
60
  if (typeOfResult) {
59
61
  return typeOfResult;
60
62
  }
61
- if (compound_1.isCompoundAssignmentToken(operator)) {
62
- const token = compound_1.unwrapCompoundAssignmentToken(operator);
63
- return compound_1.transformCompoundAssignmentExpression(context, node, node.left, node.right, token, false);
63
+ if ((0, compound_1.isCompoundAssignmentToken)(operator)) {
64
+ const token = (0, compound_1.unwrapCompoundAssignmentToken)(operator);
65
+ return (0, compound_1.transformCompoundAssignmentExpression)(context, node, node.left, node.right, token, false);
64
66
  }
65
67
  switch (operator) {
66
68
  case ts.SyntaxKind.EqualsToken:
67
- return assignments_1.transformAssignmentExpression(context, node);
69
+ return (0, assignments_1.transformAssignmentExpression)(context, node);
68
70
  case ts.SyntaxKind.InKeyword: {
69
71
  const lhs = context.transformExpression(node.left);
70
72
  const rhs = context.transformExpression(node.right);
@@ -75,13 +77,13 @@ const transformBinaryExpression = (node, context) => {
75
77
  const lhs = context.transformExpression(node.left);
76
78
  const rhs = context.transformExpression(node.right);
77
79
  const rhsType = context.checker.getTypeAtLocation(node.right);
78
- if (typescript_1.isStandardLibraryType(context, rhsType, "ObjectConstructor")) {
79
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.InstanceOfObject, node, lhs);
80
+ if ((0, typescript_1.isStandardLibraryType)(context, rhsType, "ObjectConstructor")) {
81
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.InstanceOfObject, node, lhs);
80
82
  }
81
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.InstanceOf, node, lhs, rhs);
83
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.InstanceOf, node, lhs, rhs);
82
84
  }
83
85
  case ts.SyntaxKind.CommaToken: {
84
- return transform_1.transformToImmediatelyInvokedFunctionExpression(context, () => ({
86
+ return (0, transform_1.transformToImmediatelyInvokedFunctionExpression)(context, () => ({
85
87
  statements: context.transformStatements(ts.factory.createExpressionStatement(node.left)),
86
88
  result: context.transformExpression(node.right),
87
89
  }), node);
@@ -96,13 +98,13 @@ function transformBinaryExpressionStatement(context, node) {
96
98
  if (!ts.isBinaryExpression(expression))
97
99
  return;
98
100
  const operator = expression.operatorToken.kind;
99
- if (compound_1.isCompoundAssignmentToken(operator)) {
101
+ if ((0, compound_1.isCompoundAssignmentToken)(operator)) {
100
102
  // +=, -=, etc...
101
- const token = compound_1.unwrapCompoundAssignmentToken(operator);
102
- return compound_1.transformCompoundAssignmentStatement(context, expression, expression.left, expression.right, token);
103
+ const token = (0, compound_1.unwrapCompoundAssignmentToken)(operator);
104
+ return (0, compound_1.transformCompoundAssignmentStatement)(context, expression, expression.left, expression.right, token);
103
105
  }
104
106
  else if (operator === ts.SyntaxKind.EqualsToken) {
105
- return assignments_1.transformAssignmentStatement(context, expression);
107
+ return (0, assignments_1.transformAssignmentStatement)(context, expression);
106
108
  }
107
109
  else if (operator === ts.SyntaxKind.CommaToken) {
108
110
  const statements = [
@@ -118,7 +120,7 @@ function transformNullishCoalescingExpression(context, node, transformedLeft, tr
118
120
  // Check if we can take a shortcut to 'lhs or rhs' if the left-hand side cannot be 'false'.
119
121
  const typeCanBeFalse = (type) => (type.flags & (ts.TypeFlags.Any | ts.TypeFlags.Unknown | ts.TypeFlags.Boolean)) !== 0 ||
120
122
  (type.flags & ts.TypeFlags.BooleanLiteral & ts.TypeFlags.PossiblyFalsy) !== 0;
121
- if (typescript_1.typeCanSatisfy(context, lhsType, typeCanBeFalse)) {
123
+ if ((0, typescript_1.typeCanSatisfy)(context, lhsType, typeCanBeFalse)) {
122
124
  // lhs can be false, transform to IIFE
123
125
  const lhsIdentifier = lua.createIdentifier("____lhs");
124
126
  const nilComparison = lua.createBinaryExpression(lua.cloneIdentifier(lhsIdentifier), lua.createNilLiteral(), lua.SyntaxKind.EqualityOperator);
@@ -9,16 +9,16 @@ function transformBlockOrStatement(context, statement) {
9
9
  }
10
10
  exports.transformBlockOrStatement = transformBlockOrStatement;
11
11
  function transformScopeBlock(context, node, scopeType) {
12
- scope_1.pushScope(context, scopeType);
13
- const statements = scope_1.performHoisting(context, context.transformStatements(node.statements));
14
- const scope = scope_1.popScope(context);
12
+ (0, scope_1.pushScope)(context, scopeType);
13
+ const statements = (0, scope_1.performHoisting)(context, context.transformStatements(node.statements));
14
+ const scope = (0, scope_1.popScope)(context);
15
15
  return [lua.createBlock(statements, node), scope];
16
16
  }
17
17
  exports.transformScopeBlock = transformScopeBlock;
18
18
  const transformBlock = (node, context) => {
19
- scope_1.pushScope(context, scope_1.ScopeType.Block);
20
- const statements = scope_1.performHoisting(context, context.transformStatements(node.statements));
21
- scope_1.popScope(context);
19
+ (0, scope_1.pushScope)(context, scope_1.ScopeType.Block);
20
+ const statements = (0, scope_1.performHoisting)(context, context.transformStatements(node.statements));
21
+ (0, scope_1.popScope)(context);
22
22
  return lua.createDoStatement(statements, node);
23
23
  };
24
24
  exports.transformBlock = transformBlock;
@@ -6,21 +6,16 @@ const lua = require("../../LuaAST");
6
6
  const diagnostics_1 = require("../utils/diagnostics");
7
7
  const scope_1 = require("../utils/scope");
8
8
  const transformBreakStatement = (breakStatement, context) => {
9
- const breakableScope = scope_1.findScope(context, scope_1.ScopeType.Loop | scope_1.ScopeType.Switch);
10
- if ((breakableScope === null || breakableScope === void 0 ? void 0 : breakableScope.type) === scope_1.ScopeType.Switch) {
11
- return lua.createGotoStatement(`____switch${breakableScope.id}_end`);
12
- }
13
- else {
14
- return lua.createBreakStatement(breakStatement);
15
- }
9
+ void context;
10
+ return lua.createBreakStatement(breakStatement);
16
11
  };
17
12
  exports.transformBreakStatement = transformBreakStatement;
18
13
  const transformContinueStatement = (statement, context) => {
19
14
  var _a;
20
15
  if (context.luaTarget === CompilerOptions_1.LuaTarget.Universal || context.luaTarget === CompilerOptions_1.LuaTarget.Lua51) {
21
- context.diagnostics.push(diagnostics_1.unsupportedForTarget(statement, "Continue statement", CompilerOptions_1.LuaTarget.Lua51));
16
+ context.diagnostics.push((0, diagnostics_1.unsupportedForTarget)(statement, "Continue statement", CompilerOptions_1.LuaTarget.Lua51));
22
17
  }
23
- const scope = scope_1.findScope(context, scope_1.ScopeType.Loop);
18
+ const scope = (0, scope_1.findScope)(context, scope_1.ScopeType.Loop);
24
19
  if (scope) {
25
20
  scope.loopContinued = true;
26
21
  }
@@ -46,7 +46,7 @@ function transformSpreadableExpressionsIntoArrayConcatArguments(context, express
46
46
  lastChunk.push(expression);
47
47
  }
48
48
  }
49
- return chunks.map(chunk => lua_ast_1.wrapInTable(...chunk.map(expression => context.transformExpression(expression))));
49
+ return chunks.map(chunk => (0, lua_ast_1.wrapInTable)(...chunk.map(expression => context.transformExpression(expression))));
50
50
  }
51
51
  function flattenSpreadExpressions(context, expressions) {
52
52
  const [preSpreadExpressions, postSpreadExpressions] = getExpressionsBeforeAndAfterFirstSpread(expressions);
@@ -61,7 +61,7 @@ function flattenSpreadExpressions(context, expressions) {
61
61
  }
62
62
  // Use Array.concat and unpack the result of that as the last Expression
63
63
  const concatArguments = transformSpreadableExpressionsIntoArrayConcatArguments(context, postSpreadExpressions);
64
- const lastExpression = lua_ast_1.createUnpackCall(context, lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayConcat, undefined, ...concatArguments));
64
+ const lastExpression = (0, lua_ast_1.createUnpackCall)(context, (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayConcat, undefined, ...concatArguments));
65
65
  return [...transformedPreSpreadExpressions, lastExpression];
66
66
  }
67
67
  exports.flattenSpreadExpressions = flattenSpreadExpressions;
@@ -77,7 +77,7 @@ function transformArguments(context, params, signature, callContext) {
77
77
  const paramType = context.checker.getTypeAtLocation(param);
78
78
  if (signatureParameter.valueDeclaration !== undefined) {
79
79
  const signatureType = context.checker.getTypeAtLocation(signatureParameter.valueDeclaration);
80
- assignment_validation_1.validateAssignment(context, param, paramType, signatureType, signatureParameter.name);
80
+ (0, assignment_validation_1.validateAssignment)(context, param, paramType, signatureType, signatureParameter.name);
81
81
  }
82
82
  }
83
83
  }
@@ -89,7 +89,7 @@ function transformElementAccessCall(context, left, args, signature) {
89
89
  // Cache left-side if it has effects
90
90
  // (function() local ____self = context; return ____self[argument](parameters); end)()
91
91
  const argument = ts.isElementAccessExpression(left)
92
- ? access_1.transformElementAccessArgument(context, left)
92
+ ? (0, access_1.transformElementAccessArgument)(context, left)
93
93
  : lua.createStringLiteral(left.name.text);
94
94
  const selfIdentifier = lua.createIdentifier("____self");
95
95
  const callContext = context.transformExpression(left.expression);
@@ -100,19 +100,20 @@ function transformElementAccessCall(context, left, args, signature) {
100
100
  }
101
101
  function transformContextualCallExpression(context, node, args, signature) {
102
102
  const left = ts.isCallExpression(node) ? node.expression : node.tag;
103
- if (ts.isPropertyAccessExpression(left) && ts.isIdentifier(left.name) && safe_names_1.isValidLuaIdentifier(left.name.text)) {
103
+ if (ts.isPropertyAccessExpression(left) && ts.isIdentifier(left.name) && (0, safe_names_1.isValidLuaIdentifier)(left.name.text)) {
104
104
  // table:name()
105
105
  const table = context.transformExpression(left.expression);
106
106
  if (ts.isOptionalChain(node)) {
107
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.OptionalMethodCall, node, table, lua.createStringLiteral(left.name.text, left.name), ...transformArguments(context, args, signature));
107
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.OptionalMethodCall, node, table, lua.createStringLiteral(left.name.text, left.name), lua.createBooleanLiteral(node.questionDotToken !== undefined), // Require method is present if no ?.() call
108
+ ...transformArguments(context, args, signature));
108
109
  }
109
110
  else {
110
111
  return lua.createMethodCallExpression(table, lua.createIdentifier(left.name.text, left.name), transformArguments(context, args, signature), node);
111
112
  }
112
113
  }
113
114
  else if (ts.isElementAccessExpression(left) || ts.isPropertyAccessExpression(left)) {
114
- if (typescript_1.isExpressionWithEvaluationEffect(left.expression)) {
115
- return transform_1.transformToImmediatelyInvokedFunctionExpression(context, () => transformElementAccessCall(context, left, args, signature), node);
115
+ if ((0, typescript_1.isExpressionWithEvaluationEffect)(left.expression)) {
116
+ return (0, transform_1.transformToImmediatelyInvokedFunctionExpression)(context, () => transformElementAccessCall(context, left, args, signature), node);
116
117
  }
117
118
  else {
118
119
  const callContext = context.transformExpression(left.expression);
@@ -140,7 +141,7 @@ function transformPropertyCall(context, node) {
140
141
  return lua.createCallExpression(context.transformExpression(node.expression), parameters);
141
142
  }
142
143
  const signatureDeclaration = signature === null || signature === void 0 ? void 0 : signature.getDeclaration();
143
- if (!signatureDeclaration || function_context_1.getDeclarationContextType(context, signatureDeclaration) !== function_context_1.ContextType.Void) {
144
+ if (!signatureDeclaration || (0, function_context_1.getDeclarationContextType)(context, signatureDeclaration) !== function_context_1.ContextType.Void) {
144
145
  // table:name()
145
146
  return transformContextualCallExpression(context, node, node.arguments, signature);
146
147
  }
@@ -149,7 +150,7 @@ function transformPropertyCall(context, node) {
149
150
  const callPath = context.transformExpression(node.expression);
150
151
  const parameters = transformArguments(context, node.arguments, signature);
151
152
  if (ts.isOptionalChain(node)) {
152
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.OptionalFunctionCall, node, callPath, ...parameters);
153
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.OptionalFunctionCall, node, callPath, ...parameters);
153
154
  }
154
155
  else {
155
156
  return lua.createCallExpression(callPath, parameters, node);
@@ -159,7 +160,7 @@ function transformPropertyCall(context, node) {
159
160
  function transformElementCall(context, node) {
160
161
  const signature = context.checker.getResolvedSignature(node);
161
162
  const signatureDeclaration = signature === null || signature === void 0 ? void 0 : signature.getDeclaration();
162
- if (!signatureDeclaration || function_context_1.getDeclarationContextType(context, signatureDeclaration) !== function_context_1.ContextType.Void) {
163
+ if (!signatureDeclaration || (0, function_context_1.getDeclarationContextType)(context, signatureDeclaration) !== function_context_1.ContextType.Void) {
163
164
  // A contextual parameter must be given to this call expression
164
165
  return transformContextualCallExpression(context, node, node.arguments, signature);
165
166
  }
@@ -171,43 +172,41 @@ function transformElementCall(context, node) {
171
172
  }
172
173
  }
173
174
  const transformCallExpression = (node, context) => {
174
- const isTupleReturn = annotations_1.isTupleReturnCall(context, node);
175
- const isTupleReturnForward = node.parent && ts.isReturnStatement(node.parent) && annotations_1.isInTupleReturnFunction(context, node);
176
- const isInSpread = node.parent && ts.isSpreadElement(node.parent);
177
- const returnValueIsUsed = node.parent && !ts.isExpressionStatement(node.parent);
178
- const wrapTupleReturn = isTupleReturn && !isTupleReturnForward && !typescript_1.isInDestructingAssignment(node) && !isInSpread && returnValueIsUsed;
179
- const wrapResultInTable = wrapTupleReturn || multi_1.shouldMultiReturnCallBeWrapped(context, node);
175
+ const wrapResultInTable = (0, multi_1.isMultiReturnCall)(context, node) && (0, multi_1.shouldMultiReturnCallBeWrapped)(context, node);
180
176
  const wrapResultInOptional = ts.isOptionalChain(node);
181
- const builtinResult = builtins_1.transformBuiltinCallExpression(context, node);
177
+ const builtinResult = (0, builtins_1.transformBuiltinCallExpression)(context, node);
182
178
  if (builtinResult) {
183
- return wrapResultInTable ? lua_ast_1.wrapInTable(builtinResult) : builtinResult;
179
+ return wrapResultInTable ? (0, lua_ast_1.wrapInTable)(builtinResult) : builtinResult;
184
180
  }
185
- if (operators_1.isOperatorMapping(context, node)) {
186
- return operators_1.transformOperatorMappingExpression(context, node);
181
+ if ((0, annotations_1.isTupleReturnCall)(context, node)) {
182
+ context.diagnostics.push((0, diagnostics_1.annotationRemoved)(node, annotations_1.AnnotationKind.TupleReturn));
187
183
  }
188
- if (table_1.isTableDeleteCall(context, node)) {
189
- context.diagnostics.push(diagnostics_1.invalidTableDeleteExpression(node));
190
- return transform_1.transformToImmediatelyInvokedFunctionExpression(context, () => ({ statements: table_1.transformTableDeleteExpression(context, node), result: lua.createNilLiteral() }), node);
184
+ if ((0, operators_1.isOperatorMapping)(context, node)) {
185
+ return (0, operators_1.transformOperatorMappingExpression)(context, node);
191
186
  }
192
- if (table_1.isTableGetCall(context, node)) {
193
- return table_1.transformTableGetExpression(context, node);
187
+ if ((0, table_1.isTableDeleteCall)(context, node)) {
188
+ context.diagnostics.push((0, diagnostics_1.invalidTableDeleteExpression)(node));
189
+ return (0, transform_1.transformToImmediatelyInvokedFunctionExpression)(context, () => ({ statements: (0, table_1.transformTableDeleteExpression)(context, node), result: lua.createNilLiteral() }), node);
194
190
  }
195
- if (table_1.isTableHasCall(context, node)) {
196
- return table_1.transformTableHasExpression(context, node);
191
+ if ((0, table_1.isTableGetCall)(context, node)) {
192
+ return (0, table_1.transformTableGetExpression)(context, node);
197
193
  }
198
- if (table_1.isTableSetCall(context, node)) {
199
- context.diagnostics.push(diagnostics_1.invalidTableSetExpression(node));
200
- return transform_1.transformToImmediatelyInvokedFunctionExpression(context, () => ({ statements: table_1.transformTableSetExpression(context, node), result: lua.createNilLiteral() }), node);
194
+ if ((0, table_1.isTableHasCall)(context, node)) {
195
+ return (0, table_1.transformTableHasExpression)(context, node);
196
+ }
197
+ if ((0, table_1.isTableSetCall)(context, node)) {
198
+ context.diagnostics.push((0, diagnostics_1.invalidTableSetExpression)(node));
199
+ return (0, transform_1.transformToImmediatelyInvokedFunctionExpression)(context, () => ({ statements: (0, table_1.transformTableSetExpression)(context, node), result: lua.createNilLiteral() }), node);
201
200
  }
202
201
  if (ts.isPropertyAccessExpression(node.expression)) {
203
202
  const ownerType = context.checker.getTypeAtLocation(node.expression.expression);
204
- const annotations = annotations_1.getTypeAnnotations(ownerType);
203
+ const annotations = (0, annotations_1.getTypeAnnotations)(ownerType);
205
204
  if (annotations.has(annotations_1.AnnotationKind.LuaTable)) {
206
- context.diagnostics.push(diagnostics_1.annotationRemoved(node, annotations_1.AnnotationKind.LuaTable));
205
+ context.diagnostics.push((0, diagnostics_1.annotationRemoved)(node, annotations_1.AnnotationKind.LuaTable));
207
206
  }
208
207
  const result = transformPropertyCall(context, node);
209
208
  // transformPropertyCall already wraps optional so no need to do so here
210
- return wrapResultInTable ? lua_ast_1.wrapInTable(result) : result;
209
+ return wrapResultInTable ? (0, lua_ast_1.wrapInTable)(result) : result;
211
210
  }
212
211
  if (ts.isElementAccessExpression(node.expression)) {
213
212
  const result = transformElementCall(context, node);
@@ -222,7 +221,7 @@ const transformCallExpression = (node, context) => {
222
221
  const callPath = context.transformExpression(node.expression);
223
222
  const signatureDeclaration = signature === null || signature === void 0 ? void 0 : signature.getDeclaration();
224
223
  let parameters = [];
225
- if (signatureDeclaration && function_context_1.getDeclarationContextType(context, signatureDeclaration) === function_context_1.ContextType.Void) {
224
+ if (signatureDeclaration && (0, function_context_1.getDeclarationContextType)(context, signatureDeclaration) === function_context_1.ContextType.Void) {
226
225
  parameters = transformArguments(context, node.arguments, signature);
227
226
  }
228
227
  else {
@@ -235,14 +234,15 @@ const transformCallExpression = (node, context) => {
235
234
  exports.transformCallExpression = transformCallExpression;
236
235
  function wrapIfRequired(context, shouldWrapInTable, shouldWrapOptional, call, node) {
237
236
  const wrappedOptional = shouldWrapOptional ? wrapOptionalCall(context, call, node) : call;
238
- return shouldWrapInTable ? lua_ast_1.wrapInTable(wrappedOptional) : wrappedOptional;
237
+ return shouldWrapInTable ? (0, lua_ast_1.wrapInTable)(wrappedOptional) : wrappedOptional;
239
238
  }
240
239
  function wrapOptionalCall(context, call, node) {
241
240
  if (lua.isMethodCallExpression(call)) {
242
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.OptionalMethodCall, node, call.prefixExpression, lua.createStringLiteral(call.name.text), ...call.params);
241
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.OptionalMethodCall, node, call.prefixExpression, lua.createStringLiteral(call.name.text), lua.createBooleanLiteral(node.questionDotToken !== undefined), // Require method is present if no ?.() call
242
+ ...call.params);
243
243
  }
244
244
  else {
245
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.OptionalFunctionCall, node, call.expression, ...call.params);
245
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.OptionalFunctionCall, node, call.expression, ...call.params);
246
246
  }
247
247
  }
248
248
  //# sourceMappingURL=call.js.map
@@ -9,9 +9,9 @@ const lualib_1 = require("../../utils/lualib");
9
9
  function transformDecoratorExpression(context, decorator) {
10
10
  const expression = decorator.expression;
11
11
  const type = context.checker.getTypeAtLocation(expression);
12
- const callContext = function_context_1.getFunctionContextType(context, type);
12
+ const callContext = (0, function_context_1.getFunctionContextType)(context, type);
13
13
  if (callContext === function_context_1.ContextType.Void) {
14
- context.diagnostics.push(diagnostics_1.decoratorInvalidContext(decorator));
14
+ context.diagnostics.push((0, diagnostics_1.decoratorInvalidContext)(decorator));
15
15
  }
16
16
  return context.transformExpression(expression);
17
17
  }
@@ -26,7 +26,7 @@ function createDecoratingExpression(context, kind, decorators, targetTableName,
26
26
  kind === ts.SyntaxKind.SetAccessor;
27
27
  trailingExpressions.push(isMethodOrAccessor ? lua.createBooleanLiteral(true) : lua.createNilLiteral());
28
28
  }
29
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.Decorate, undefined, ...trailingExpressions);
29
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.Decorate, undefined, ...trailingExpressions);
30
30
  }
31
31
  exports.createDecoratingExpression = createDecoratingExpression;
32
32
  //# sourceMappingURL=decorators.js.map