typescript-to-lua 1.0.1 → 1.3.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 (194) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/dist/CompilerOptions.d.ts +4 -3
  3. package/dist/LuaAST.d.ts +1 -0
  4. package/dist/LuaAST.js +14 -6
  5. package/dist/LuaLib.d.ts +4 -3
  6. package/dist/LuaLib.js +6 -5
  7. package/dist/LuaPrinter.d.ts +15 -4
  8. package/dist/LuaPrinter.js +81 -29
  9. package/dist/cli/diagnostics.js +2 -2
  10. package/dist/cli/parse.d.ts +1 -1
  11. package/dist/cli/parse.js +14 -0
  12. package/dist/cli/report.js +1 -1
  13. package/dist/cli/tsconfig.js +4 -4
  14. package/dist/lualib/ArrayFlat.lua +1 -1
  15. package/dist/lualib/ArrayFlatMap.lua +1 -1
  16. package/dist/lualib/ArrayIsArray.lua +1 -1
  17. package/dist/lualib/ArrayReduce.lua +7 -1
  18. package/dist/lualib/ArrayReduceRight.lua +7 -1
  19. package/dist/lualib/ArraySetLength.lua +1 -1
  20. package/dist/lualib/ArraySplice.lua +5 -5
  21. package/dist/lualib/Await.lua +43 -19
  22. package/dist/lualib/CloneDescriptor.lua +7 -7
  23. package/dist/lualib/Decorate.lua +1 -1
  24. package/dist/lualib/DelegatedYield.lua +1 -3
  25. package/dist/lualib/Delete.lua +6 -6
  26. package/dist/lualib/Error.lua +47 -44
  27. package/dist/lualib/Generator.lua +1 -5
  28. package/dist/lualib/InstanceOf.lua +1 -1
  29. package/dist/lualib/InstanceOfObject.lua +1 -1
  30. package/dist/lualib/Map.lua +130 -134
  31. package/dist/lualib/Number.lua +1 -1
  32. package/dist/lualib/NumberIsFinite.lua +1 -1
  33. package/dist/lualib/NumberToString.lua +3 -5
  34. package/dist/lualib/ObjectDefineProperty.lua +40 -8
  35. package/dist/lualib/ParseFloat.lua +9 -5
  36. package/dist/lualib/ParseInt.lua +15 -3
  37. package/dist/lualib/Promise.lua +44 -26
  38. package/dist/lualib/Set.lua +119 -123
  39. package/dist/lualib/SetDescriptor.lua +7 -1
  40. package/dist/lualib/SourceMapTraceBack.lua +19 -9
  41. package/dist/lualib/SparseArrayNew.lua +5 -0
  42. package/dist/lualib/SparseArrayPush.lua +9 -0
  43. package/dist/lualib/SparseArraySpread.lua +4 -0
  44. package/dist/lualib/StringAccess.lua +1 -1
  45. package/dist/lualib/StringCharCodeAt.lua +1 -1
  46. package/dist/lualib/StringEndsWith.lua +2 -2
  47. package/dist/lualib/StringPadEnd.lua +2 -2
  48. package/dist/lualib/StringPadStart.lua +2 -2
  49. package/dist/lualib/StringReplace.lua +12 -11
  50. package/dist/lualib/StringReplaceAll.lua +35 -0
  51. package/dist/lualib/StringSlice.lua +2 -2
  52. package/dist/lualib/StringSplit.lua +3 -3
  53. package/dist/lualib/StringStartsWith.lua +1 -1
  54. package/dist/lualib/StringSubstr.lua +1 -1
  55. package/dist/lualib/StringSubstring.lua +2 -2
  56. package/dist/lualib/Symbol.lua +3 -5
  57. package/dist/lualib/WeakMap.lua +40 -42
  58. package/dist/lualib/WeakSet.lua +36 -38
  59. package/dist/lualib/lualib_bundle.lua +876 -745
  60. package/dist/transformation/builtins/array.js +29 -30
  61. package/dist/transformation/builtins/console.js +2 -2
  62. package/dist/transformation/builtins/function.js +14 -12
  63. package/dist/transformation/builtins/global.js +8 -8
  64. package/dist/transformation/builtins/index.d.ts +1 -1
  65. package/dist/transformation/builtins/index.js +69 -36
  66. package/dist/transformation/builtins/math.js +4 -4
  67. package/dist/transformation/builtins/number.js +7 -7
  68. package/dist/transformation/builtins/object.d.ts +2 -1
  69. package/dist/transformation/builtins/object.js +12 -13
  70. package/dist/transformation/builtins/promise.js +9 -9
  71. package/dist/transformation/builtins/string.js +32 -31
  72. package/dist/transformation/builtins/symbol.js +3 -3
  73. package/dist/transformation/context/context.d.ts +12 -0
  74. package/dist/transformation/context/context.js +105 -6
  75. package/dist/transformation/index.js +1 -1
  76. package/dist/transformation/utils/annotations.d.ts +1 -3
  77. package/dist/transformation/utils/annotations.js +0 -2
  78. package/dist/transformation/utils/assignment-validation.js +8 -7
  79. package/dist/transformation/utils/diagnostics.d.ts +9 -0
  80. package/dist/transformation/utils/diagnostics.js +8 -5
  81. package/dist/transformation/utils/export.d.ts +3 -2
  82. package/dist/transformation/utils/export.js +14 -7
  83. package/dist/transformation/utils/function-context.js +8 -8
  84. package/dist/transformation/utils/language-extensions.d.ts +2 -0
  85. package/dist/transformation/utils/language-extensions.js +7 -1
  86. package/dist/transformation/utils/lua-ast.d.ts +0 -1
  87. package/dist/transformation/utils/lua-ast.js +25 -35
  88. package/dist/transformation/utils/lualib.js +1 -1
  89. package/dist/transformation/utils/preceding-statements.d.ts +3 -0
  90. package/dist/transformation/utils/preceding-statements.js +11 -0
  91. package/dist/transformation/utils/safe-names.d.ts +4 -2
  92. package/dist/transformation/utils/safe-names.js +13 -7
  93. package/dist/transformation/utils/scope.d.ts +9 -1
  94. package/dist/transformation/utils/scope.js +78 -40
  95. package/dist/transformation/utils/symbols.js +6 -6
  96. package/dist/transformation/utils/typescript/index.d.ts +1 -0
  97. package/dist/transformation/utils/typescript/index.js +16 -1
  98. package/dist/transformation/utils/typescript/nodes.d.ts +2 -0
  99. package/dist/transformation/utils/typescript/nodes.js +21 -1
  100. package/dist/transformation/utils/typescript/types.d.ts +3 -1
  101. package/dist/transformation/utils/typescript/types.js +40 -13
  102. package/dist/transformation/visitors/access.d.ts +3 -0
  103. package/dist/transformation/visitors/access.js +74 -47
  104. package/dist/transformation/visitors/async-await.js +5 -4
  105. package/dist/transformation/visitors/binary-expression/assignments.d.ts +3 -2
  106. package/dist/transformation/visitors/binary-expression/assignments.js +86 -77
  107. package/dist/transformation/visitors/binary-expression/bit.js +4 -4
  108. package/dist/transformation/visitors/binary-expression/compound.d.ts +5 -4
  109. package/dist/transformation/visitors/binary-expression/compound.js +69 -71
  110. package/dist/transformation/visitors/binary-expression/destructuring-assignments.d.ts +2 -2
  111. package/dist/transformation/visitors/binary-expression/destructuring-assignments.js +65 -36
  112. package/dist/transformation/visitors/binary-expression/index.d.ts +3 -1
  113. package/dist/transformation/visitors/binary-expression/index.js +84 -42
  114. package/dist/transformation/visitors/block.js +6 -6
  115. package/dist/transformation/visitors/break-continue.js +2 -2
  116. package/dist/transformation/visitors/call.d.ts +3 -2
  117. package/dist/transformation/visitors/call.js +130 -143
  118. package/dist/transformation/visitors/class/decorators.js +3 -3
  119. package/dist/transformation/visitors/class/index.js +43 -39
  120. package/dist/transformation/visitors/class/members/accessors.js +6 -6
  121. package/dist/transformation/visitors/class/members/constructor.js +7 -7
  122. package/dist/transformation/visitors/class/members/fields.js +6 -6
  123. package/dist/transformation/visitors/class/members/method.js +6 -6
  124. package/dist/transformation/visitors/class/new.js +14 -16
  125. package/dist/transformation/visitors/class/setup.js +11 -11
  126. package/dist/transformation/visitors/class/utils.js +2 -2
  127. package/dist/transformation/visitors/conditional.js +36 -43
  128. package/dist/transformation/visitors/delete.js +8 -4
  129. package/dist/transformation/visitors/enum.js +8 -8
  130. package/dist/transformation/visitors/errors.js +35 -33
  131. package/dist/transformation/visitors/expression-list.d.ts +7 -0
  132. package/dist/transformation/visitors/expression-list.js +120 -0
  133. package/dist/transformation/visitors/expression-statement.js +10 -6
  134. package/dist/transformation/visitors/function.d.ts +2 -0
  135. package/dist/transformation/visitors/function.js +80 -33
  136. package/dist/transformation/visitors/identifier.js +26 -22
  137. package/dist/transformation/visitors/index.js +2 -2
  138. package/dist/transformation/visitors/language-extensions/iterable.js +7 -7
  139. package/dist/transformation/visitors/language-extensions/multi.d.ts +1 -1
  140. package/dist/transformation/visitors/language-extensions/multi.js +3 -3
  141. package/dist/transformation/visitors/language-extensions/operators.js +6 -6
  142. package/dist/transformation/visitors/language-extensions/pairsIterable.d.ts +5 -0
  143. package/dist/transformation/visitors/language-extensions/pairsIterable.js +53 -0
  144. package/dist/transformation/visitors/language-extensions/range.js +6 -6
  145. package/dist/transformation/visitors/language-extensions/table.js +5 -5
  146. package/dist/transformation/visitors/literal.d.ts +1 -2
  147. package/dist/transformation/visitors/literal.js +87 -57
  148. package/dist/transformation/visitors/loops/do-while.js +35 -9
  149. package/dist/transformation/visitors/loops/for-in.js +4 -4
  150. package/dist/transformation/visitors/loops/for-of.js +17 -13
  151. package/dist/transformation/visitors/loops/for.js +28 -8
  152. package/dist/transformation/visitors/loops/utils.d.ts +1 -0
  153. package/dist/transformation/visitors/loops/utils.js +26 -10
  154. package/dist/transformation/visitors/modules/export.js +14 -15
  155. package/dist/transformation/visitors/modules/import.js +10 -10
  156. package/dist/transformation/visitors/namespace.js +13 -13
  157. package/dist/transformation/visitors/optional-chaining.d.ts +16 -0
  158. package/dist/transformation/visitors/optional-chaining.js +172 -0
  159. package/dist/transformation/visitors/return.d.ts +1 -0
  160. package/dist/transformation/visitors/return.js +40 -26
  161. package/dist/transformation/visitors/sourceFile.js +12 -9
  162. package/dist/transformation/visitors/spread.js +23 -16
  163. package/dist/transformation/visitors/switch.js +63 -20
  164. package/dist/transformation/visitors/template.js +10 -7
  165. package/dist/transformation/visitors/typeof.js +4 -2
  166. package/dist/transformation/visitors/typescript.js +1 -1
  167. package/dist/transformation/visitors/unary-expression.js +9 -9
  168. package/dist/transformation/visitors/variable-declaration.js +55 -32
  169. package/dist/transformation/visitors/void.d.ts +6 -0
  170. package/dist/transformation/visitors/void.js +20 -0
  171. package/dist/transpilation/bundle.d.ts +3 -0
  172. package/dist/transpilation/bundle.js +52 -10
  173. package/dist/transpilation/diagnostics.js +3 -3
  174. package/dist/transpilation/index.js +2 -2
  175. package/dist/transpilation/output-collector.js +2 -2
  176. package/dist/transpilation/plugins.js +1 -1
  177. package/dist/transpilation/resolve.js +20 -13
  178. package/dist/transpilation/transformers.js +45 -25
  179. package/dist/transpilation/transpile.js +6 -6
  180. package/dist/transpilation/transpiler.js +8 -8
  181. package/dist/transpilation/utils.js +5 -3
  182. package/dist/tstl.js +8 -8
  183. package/dist/utils.js +2 -2
  184. package/language-extensions/index.d.ts +11 -1
  185. package/package.json +15 -12
  186. package/dist/lualib/OptionalChainAccess.lua +0 -6
  187. package/dist/lualib/OptionalFunctionCall.lua +0 -6
  188. package/dist/lualib/OptionalMethodCall.lua +0 -11
  189. package/dist/transformation/utils/transform.d.ts +0 -8
  190. package/dist/transformation/utils/transform.js +0 -14
  191. package/dist/transformation/visitors/jsx/jsx.d.ts +0 -9
  192. package/dist/transformation/visitors/jsx/jsx.js +0 -237
  193. package/dist/transformation/visitors/jsx/xhtml.d.ts +0 -3
  194. package/dist/transformation/visitors/jsx/xhtml.js +0 -260
@@ -9,69 +9,68 @@ const typescript_1 = require("../utils/typescript");
9
9
  function transformArrayConstructorCall(context, node) {
10
10
  const expression = node.expression;
11
11
  const signature = context.checker.getResolvedSignature(node);
12
- const params = call_1.transformArguments(context, node.arguments, signature);
12
+ const params = (0, call_1.transformArguments)(context, node.arguments, signature);
13
13
  const expressionName = expression.name.text;
14
14
  switch (expressionName) {
15
15
  case "isArray":
16
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayIsArray, node, ...params);
16
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayIsArray, node, ...params);
17
17
  default:
18
- context.diagnostics.push(diagnostics_1.unsupportedProperty(expression.name, "Array", expressionName));
18
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(expression.name, "Array", expressionName));
19
19
  }
20
20
  }
21
21
  exports.transformArrayConstructorCall = transformArrayConstructorCall;
22
22
  function transformArrayPrototypeCall(context, node) {
23
23
  const expression = node.expression;
24
24
  const signature = context.checker.getResolvedSignature(node);
25
- const params = call_1.transformArguments(context, node.arguments, signature);
26
- const caller = context.transformExpression(expression.expression);
25
+ const [caller, params] = (0, call_1.transformCallAndArguments)(context, expression.expression, node.arguments, signature);
27
26
  const expressionName = expression.name.text;
28
27
  switch (expressionName) {
29
28
  case "concat":
30
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayConcat, node, caller, ...params);
29
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayConcat, node, caller, ...params);
31
30
  case "entries":
32
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayEntries, node, caller);
31
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayEntries, node, caller);
33
32
  case "push":
34
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayPush, node, caller, ...params);
33
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayPush, node, caller, ...params);
35
34
  case "reverse":
36
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayReverse, node, caller);
35
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayReverse, node, caller);
37
36
  case "shift":
38
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayShift, node, caller);
37
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayShift, node, caller);
39
38
  case "unshift":
40
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayUnshift, node, caller, ...params);
39
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayUnshift, node, caller, ...params);
41
40
  case "sort":
42
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArraySort, node, caller, ...params);
41
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArraySort, node, caller, ...params);
43
42
  case "pop":
44
43
  return lua.createCallExpression(lua.createTableIndexExpression(lua.createIdentifier("table"), lua.createStringLiteral("remove")), [caller], node);
45
44
  case "forEach":
46
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayForEach, node, caller, ...params);
45
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayForEach, node, caller, ...params);
47
46
  case "find":
48
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayFind, node, caller, ...params);
47
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayFind, node, caller, ...params);
49
48
  case "findIndex":
50
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayFindIndex, node, caller, ...params);
49
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayFindIndex, node, caller, ...params);
51
50
  case "includes":
52
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayIncludes, node, caller, ...params);
51
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayIncludes, node, caller, ...params);
53
52
  case "indexOf":
54
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayIndexOf, node, caller, ...params);
53
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayIndexOf, node, caller, ...params);
55
54
  case "map":
56
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayMap, node, caller, ...params);
55
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayMap, node, caller, ...params);
57
56
  case "filter":
58
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayFilter, node, caller, ...params);
57
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayFilter, node, caller, ...params);
59
58
  case "reduce":
60
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayReduce, node, caller, ...params);
59
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayReduce, node, caller, ...params);
61
60
  case "reduceRight":
62
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayReduceRight, node, caller, ...params);
61
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayReduceRight, node, caller, ...params);
63
62
  case "some":
64
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArraySome, node, caller, ...params);
63
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArraySome, node, caller, ...params);
65
64
  case "every":
66
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayEvery, node, caller, ...params);
65
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayEvery, node, caller, ...params);
67
66
  case "slice":
68
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArraySlice, node, caller, ...params);
67
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArraySlice, node, caller, ...params);
69
68
  case "splice":
70
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArraySplice, node, caller, ...params);
69
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArraySplice, node, caller, ...params);
71
70
  case "join":
72
71
  const callerType = context.checker.getTypeAtLocation(expression.expression);
73
72
  const elementType = context.checker.getElementTypeOfArrayType(callerType);
74
- if (elementType && (typescript_1.isStringType(context, elementType) || typescript_1.isNumberType(context, elementType))) {
73
+ if (elementType && ((0, typescript_1.isStringType)(context, elementType) || (0, typescript_1.isNumberType)(context, elementType))) {
75
74
  const defaultSeparatorLiteral = lua.createStringLiteral(",");
76
75
  const parameters = [
77
76
  caller,
@@ -81,13 +80,13 @@ function transformArrayPrototypeCall(context, node) {
81
80
  ];
82
81
  return lua.createCallExpression(lua.createTableIndexExpression(lua.createIdentifier("table"), lua.createStringLiteral("concat")), parameters, node);
83
82
  }
84
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayJoin, node, caller, ...params);
83
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayJoin, node, caller, ...params);
85
84
  case "flat":
86
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayFlat, node, caller, ...params);
85
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayFlat, node, caller, ...params);
87
86
  case "flatMap":
88
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayFlatMap, node, caller, ...params);
87
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayFlatMap, node, caller, ...params);
89
88
  default:
90
- context.diagnostics.push(diagnostics_1.unsupportedProperty(expression.name, "array", expressionName));
89
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(expression.name, "array", expressionName));
91
90
  }
92
91
  }
93
92
  exports.transformArrayPrototypeCall = transformArrayPrototypeCall;
@@ -10,7 +10,7 @@ function transformConsoleCall(context, expression) {
10
10
  const method = expression.expression;
11
11
  const methodName = method.name.text;
12
12
  const signature = context.checker.getResolvedSignature(expression);
13
- const parameters = call_1.transformArguments(context, expression.arguments, signature);
13
+ const parameters = (0, call_1.transformArguments)(context, expression.arguments, signature);
14
14
  switch (methodName) {
15
15
  case "error":
16
16
  case "info":
@@ -42,7 +42,7 @@ function transformConsoleCall(context, expression) {
42
42
  const debugTracebackCall = lua.createCallExpression(lua.createTableIndexExpression(lua.createIdentifier("debug"), lua.createStringLiteral("traceback")), parameters);
43
43
  return lua.createCallExpression(lua.createIdentifier("print"), [debugTracebackCall]);
44
44
  default:
45
- context.diagnostics.push(diagnostics_1.unsupportedProperty(method.name, "console", methodName));
45
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(method.name, "console", methodName));
46
46
  }
47
47
  }
48
48
  exports.transformConsoleCall = transformConsoleCall;
@@ -11,22 +11,21 @@ const call_1 = require("../visitors/call");
11
11
  function transformFunctionPrototypeCall(context, node) {
12
12
  const expression = node.expression;
13
13
  const callerType = context.checker.getTypeAtLocation(expression.expression);
14
- if (function_context_1.getFunctionContextType(context, callerType) === function_context_1.ContextType.Void) {
15
- context.diagnostics.push(diagnostics_1.unsupportedSelfFunctionConversion(node));
14
+ if ((0, function_context_1.getFunctionContextType)(context, callerType) === function_context_1.ContextType.Void) {
15
+ context.diagnostics.push((0, diagnostics_1.unsupportedSelfFunctionConversion)(node));
16
16
  }
17
17
  const signature = context.checker.getResolvedSignature(node);
18
- const params = call_1.transformArguments(context, node.arguments, signature);
19
- const caller = context.transformExpression(expression.expression);
18
+ const [caller, params] = (0, call_1.transformCallAndArguments)(context, expression.expression, node.arguments, signature);
20
19
  const expressionName = expression.name.text;
21
20
  switch (expressionName) {
22
21
  case "apply":
23
- return lua.createCallExpression(caller, [params[0], lua_ast_1.createUnpackCall(context, params[1], node.arguments[1])], node);
22
+ return lua.createCallExpression(caller, [params[0], (0, lua_ast_1.createUnpackCall)(context, params[1], node.arguments[1])], node);
24
23
  case "bind":
25
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.FunctionBind, node, caller, ...params);
24
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.FunctionBind, node, caller, ...params);
26
25
  case "call":
27
26
  return lua.createCallExpression(caller, params, node);
28
- default:
29
- context.diagnostics.push(diagnostics_1.unsupportedProperty(expression.name, "function", expressionName));
27
+ case "toString":
28
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(expression.name, "function", expressionName));
30
29
  }
31
30
  }
32
31
  exports.transformFunctionPrototypeCall = transformFunctionPrototypeCall;
@@ -34,17 +33,20 @@ function transformFunctionProperty(context, node) {
34
33
  switch (node.name.text) {
35
34
  case "length":
36
35
  if (context.luaTarget === CompilerOptions_1.LuaTarget.Lua51 || context.luaTarget === CompilerOptions_1.LuaTarget.Universal) {
37
- context.diagnostics.push(diagnostics_1.unsupportedForTarget(node, "function.length", CompilerOptions_1.LuaTarget.Lua51));
36
+ context.diagnostics.push((0, diagnostics_1.unsupportedForTarget)(node, "function.length", CompilerOptions_1.LuaTarget.Lua51));
38
37
  }
39
38
  // debug.getinfo(fn)
40
39
  const getInfoCall = lua.createCallExpression(lua.createTableIndexExpression(lua.createIdentifier("debug"), lua.createStringLiteral("getinfo")), [context.transformExpression(node.expression)]);
41
40
  const nparams = lua.createTableIndexExpression(getInfoCall, lua.createStringLiteral("nparams"));
42
- const contextType = function_context_1.getFunctionContextType(context, context.checker.getTypeAtLocation(node.expression));
41
+ const contextType = (0, function_context_1.getFunctionContextType)(context, context.checker.getTypeAtLocation(node.expression));
43
42
  return contextType === function_context_1.ContextType.NonVoid
44
43
  ? lua.createBinaryExpression(nparams, lua.createNumericLiteral(1), lua.SyntaxKind.SubtractionOperator)
45
44
  : nparams;
46
- default:
47
- context.diagnostics.push(diagnostics_1.unsupportedProperty(node.name, "function", node.name.text));
45
+ case "arguments":
46
+ case "caller":
47
+ case "displayName":
48
+ case "name":
49
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(node.name, "function", node.name.text));
48
50
  }
49
51
  }
50
52
  exports.transformFunctionProperty = transformFunctionProperty;
@@ -6,24 +6,24 @@ const typescript_1 = require("../utils/typescript");
6
6
  const call_1 = require("../visitors/call");
7
7
  function transformGlobalCall(context, node) {
8
8
  const signature = context.checker.getResolvedSignature(node);
9
- const parameters = call_1.transformArguments(context, node.arguments, signature);
9
+ const parameters = (0, call_1.transformArguments)(context, node.arguments, signature);
10
10
  const expressionType = context.checker.getTypeAtLocation(node.expression);
11
11
  const name = expressionType.symbol.name;
12
12
  switch (name) {
13
13
  case "SymbolConstructor":
14
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.Symbol, node, ...parameters);
14
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.Symbol, node, ...parameters);
15
15
  case "NumberConstructor":
16
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.Number, node, ...parameters);
16
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.Number, node, ...parameters);
17
17
  case "isNaN":
18
18
  case "isFinite":
19
- const numberParameters = typescript_1.isNumberType(context, expressionType)
19
+ const numberParameters = (0, typescript_1.isNumberType)(context, expressionType)
20
20
  ? parameters
21
- : [lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.Number, undefined, ...parameters)];
22
- return lualib_1.transformLuaLibFunction(context, name === "isNaN" ? lualib_1.LuaLibFeature.NumberIsNaN : lualib_1.LuaLibFeature.NumberIsFinite, node, ...numberParameters);
21
+ : [(0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.Number, undefined, ...parameters)];
22
+ return (0, lualib_1.transformLuaLibFunction)(context, name === "isNaN" ? lualib_1.LuaLibFeature.NumberIsNaN : lualib_1.LuaLibFeature.NumberIsFinite, node, ...numberParameters);
23
23
  case "parseFloat":
24
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ParseFloat, node, ...parameters);
24
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ParseFloat, node, ...parameters);
25
25
  case "parseInt":
26
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ParseInt, node, ...parameters);
26
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ParseInt, node, ...parameters);
27
27
  }
28
28
  }
29
29
  exports.transformGlobalCall = transformGlobalCall;
@@ -2,5 +2,5 @@ import * as ts from "typescript";
2
2
  import * as lua from "../../LuaAST";
3
3
  import { TransformationContext } from "../context";
4
4
  export declare function transformBuiltinPropertyAccessExpression(context: TransformationContext, node: ts.PropertyAccessExpression): lua.Expression | undefined;
5
- export declare function transformBuiltinCallExpression(context: TransformationContext, node: ts.CallExpression): lua.Expression | undefined;
5
+ export declare function transformBuiltinCallExpression(context: TransformationContext, node: ts.CallExpression, isOptionalCall: boolean): lua.Expression | undefined;
6
6
  export declare function transformBuiltinIdentifierExpression(context: TransformationContext, node: ts.Identifier): lua.Expression | undefined;
@@ -19,78 +19,111 @@ const object_1 = require("./object");
19
19
  const promise_1 = require("./promise");
20
20
  const string_1 = require("./string");
21
21
  const symbol_1 = require("./symbol");
22
+ const diagnostics_1 = require("../utils/diagnostics");
22
23
  function transformBuiltinPropertyAccessExpression(context, node) {
23
24
  const ownerType = context.checker.getTypeAtLocation(node.expression);
24
- if (typescript_1.isStringType(context, ownerType)) {
25
- return string_1.transformStringProperty(context, node);
25
+ if ((0, typescript_1.isStringType)(context, ownerType)) {
26
+ return (0, string_1.transformStringProperty)(context, node);
26
27
  }
27
- if (typescript_1.isArrayType(context, ownerType)) {
28
- return array_1.transformArrayProperty(context, node);
28
+ if ((0, typescript_1.isArrayType)(context, ownerType)) {
29
+ return (0, array_1.transformArrayProperty)(context, node);
29
30
  }
30
- if (typescript_1.isFunctionType(context, ownerType)) {
31
- return function_1.transformFunctionProperty(context, node);
31
+ if ((0, typescript_1.isFunctionType)(ownerType)) {
32
+ return (0, function_1.transformFunctionProperty)(context, node);
32
33
  }
33
- if (ts.isIdentifier(node.expression) && typescript_1.isStandardLibraryType(context, ownerType, undefined)) {
34
+ if (ts.isIdentifier(node.expression) && (0, typescript_1.isStandardLibraryType)(context, ownerType, undefined)) {
34
35
  switch (node.expression.text) {
35
36
  case "Math":
36
- return math_1.transformMathProperty(context, node);
37
+ return (0, math_1.transformMathProperty)(context, node);
37
38
  case "Symbol":
38
- lualib_1.importLuaLibFeature(context, lualib_1.LuaLibFeature.Symbol);
39
+ (0, lualib_1.importLuaLibFeature)(context, lualib_1.LuaLibFeature.Symbol);
39
40
  }
40
41
  }
41
42
  }
42
43
  exports.transformBuiltinPropertyAccessExpression = transformBuiltinPropertyAccessExpression;
43
- function transformBuiltinCallExpression(context, node) {
44
+ function transformBuiltinCallExpression(context, node, isOptionalCall) {
44
45
  const expressionType = context.checker.getTypeAtLocation(node.expression);
45
- if (ts.isIdentifier(node.expression) && typescript_1.isStandardLibraryType(context, expressionType, undefined)) {
46
+ if (ts.isIdentifier(node.expression) && (0, typescript_1.isStandardLibraryType)(context, expressionType, undefined)) {
46
47
  // TODO:
47
- new_1.checkForLuaLibType(context, expressionType);
48
- const result = global_1.transformGlobalCall(context, node);
48
+ (0, new_1.checkForLuaLibType)(context, expressionType);
49
+ const result = (0, global_1.transformGlobalCall)(context, node);
49
50
  if (result) {
50
51
  return result;
51
52
  }
52
53
  }
53
- if (!ts.isPropertyAccessExpression(node.expression)) {
54
+ const expression = ts.getOriginalNode(node.expression);
55
+ if (!ts.isPropertyAccessExpression(expression)) {
54
56
  return;
55
57
  }
56
- utils_1.assume(node);
58
+ (0, utils_1.assume)(node);
59
+ const isOptionalAccess = expression.questionDotToken;
60
+ const unsupportedOptionalCall = () => {
61
+ context.diagnostics.push((0, diagnostics_1.unsupportedBuiltinOptionalCall)(node));
62
+ return lua.createNilLiteral();
63
+ };
57
64
  // If the function being called is of type owner.func, get the type of owner
58
- const ownerType = context.checker.getTypeAtLocation(node.expression.expression);
59
- if (typescript_1.isStandardLibraryType(context, ownerType, undefined)) {
65
+ const ownerType = context.checker.getTypeAtLocation(expression.expression);
66
+ if ((0, typescript_1.isStandardLibraryType)(context, ownerType, undefined)) {
60
67
  const symbol = ownerType.getSymbol();
61
68
  switch (symbol === null || symbol === void 0 ? void 0 : symbol.name) {
62
69
  case "ArrayConstructor":
63
- return array_1.transformArrayConstructorCall(context, node);
70
+ if (isOptionalCall || isOptionalAccess)
71
+ return unsupportedOptionalCall();
72
+ return (0, array_1.transformArrayConstructorCall)(context, node);
64
73
  case "Console":
65
- return console_1.transformConsoleCall(context, node);
74
+ if (isOptionalCall || isOptionalAccess)
75
+ return unsupportedOptionalCall();
76
+ return (0, console_1.transformConsoleCall)(context, node);
66
77
  case "Math":
67
- return math_1.transformMathCall(context, node);
78
+ if (isOptionalCall || isOptionalAccess)
79
+ return unsupportedOptionalCall();
80
+ return (0, math_1.transformMathCall)(context, node);
68
81
  case "StringConstructor":
69
- return string_1.transformStringConstructorCall(context, node);
82
+ if (isOptionalCall || isOptionalAccess)
83
+ return unsupportedOptionalCall();
84
+ return (0, string_1.transformStringConstructorCall)(context, node);
70
85
  case "ObjectConstructor":
71
- return object_1.transformObjectConstructorCall(context, node);
86
+ if (isOptionalCall || isOptionalAccess)
87
+ return unsupportedOptionalCall();
88
+ return (0, object_1.transformObjectConstructorCall)(context, node);
72
89
  case "SymbolConstructor":
73
- return symbol_1.transformSymbolConstructorCall(context, node);
90
+ if (isOptionalCall || isOptionalAccess)
91
+ return unsupportedOptionalCall();
92
+ return (0, symbol_1.transformSymbolConstructorCall)(context, node);
74
93
  case "NumberConstructor":
75
- return number_1.transformNumberConstructorCall(context, node);
94
+ if (isOptionalCall || isOptionalAccess)
95
+ return unsupportedOptionalCall();
96
+ return (0, number_1.transformNumberConstructorCall)(context, node);
76
97
  case "PromiseConstructor":
77
- return promise_1.transformPromiseConstructorCall(context, node);
98
+ if (isOptionalCall || isOptionalAccess)
99
+ return unsupportedOptionalCall();
100
+ return (0, promise_1.transformPromiseConstructorCall)(context, node);
78
101
  }
79
102
  }
80
- if (typescript_1.isStringType(context, ownerType) && typescript_1.hasStandardLibrarySignature(context, node)) {
81
- return string_1.transformStringPrototypeCall(context, node);
103
+ if ((0, typescript_1.isStringType)(context, ownerType) && (0, typescript_1.hasStandardLibrarySignature)(context, node)) {
104
+ if (isOptionalCall)
105
+ return unsupportedOptionalCall();
106
+ return (0, string_1.transformStringPrototypeCall)(context, node);
82
107
  }
83
- if (typescript_1.isNumberType(context, ownerType) && typescript_1.hasStandardLibrarySignature(context, node)) {
84
- return number_1.transformNumberPrototypeCall(context, node);
108
+ if ((0, typescript_1.isNumberType)(context, ownerType) && (0, typescript_1.hasStandardLibrarySignature)(context, node)) {
109
+ if (isOptionalCall)
110
+ return unsupportedOptionalCall();
111
+ return (0, number_1.transformNumberPrototypeCall)(context, node);
85
112
  }
86
- if (typescript_1.isArrayType(context, ownerType) && typescript_1.hasStandardLibrarySignature(context, node)) {
87
- return array_1.transformArrayPrototypeCall(context, node);
113
+ if ((0, typescript_1.isArrayType)(context, ownerType) && (0, typescript_1.hasStandardLibrarySignature)(context, node)) {
114
+ if (isOptionalCall)
115
+ return unsupportedOptionalCall();
116
+ return (0, array_1.transformArrayPrototypeCall)(context, node);
88
117
  }
89
- if (typescript_1.isFunctionType(context, ownerType) && typescript_1.hasStandardLibrarySignature(context, node)) {
90
- return function_1.transformFunctionPrototypeCall(context, node);
118
+ if ((0, typescript_1.isFunctionType)(ownerType) && (0, typescript_1.hasStandardLibrarySignature)(context, node)) {
119
+ if (isOptionalCall)
120
+ return unsupportedOptionalCall();
121
+ return (0, function_1.transformFunctionPrototypeCall)(context, node);
91
122
  }
92
- const objectResult = object_1.transformObjectPrototypeCall(context, node);
123
+ const objectResult = (0, object_1.transformObjectPrototypeCall)(context, node, expression);
93
124
  if (objectResult) {
125
+ if (isOptionalCall)
126
+ return unsupportedOptionalCall();
94
127
  return objectResult;
95
128
  }
96
129
  }
@@ -98,13 +131,13 @@ exports.transformBuiltinCallExpression = transformBuiltinCallExpression;
98
131
  function transformBuiltinIdentifierExpression(context, node) {
99
132
  switch (node.text) {
100
133
  case "NaN":
101
- return lua_ast_1.createNaN(node);
134
+ return (0, lua_ast_1.createNaN)(node);
102
135
  case "Infinity":
103
136
  const math = lua.createIdentifier("math");
104
137
  const huge = lua.createStringLiteral("huge");
105
138
  return lua.createTableIndexExpression(math, huge, node);
106
139
  case "globalThis":
107
- return lua.createIdentifier("_G", node, symbols_1.getIdentifierSymbolId(context, node), "globalThis");
140
+ return lua.createIdentifier("_G", node, (0, symbols_1.getIdentifierSymbolId)(context, node), "globalThis");
108
141
  }
109
142
  }
110
143
  exports.transformBuiltinIdentifierExpression = transformBuiltinIdentifierExpression;
@@ -22,14 +22,14 @@ function transformMathProperty(context, node) {
22
22
  case "SQRT2":
23
23
  return lua.createNumericLiteral(Math[name], node);
24
24
  default:
25
- context.diagnostics.push(diagnostics_1.unsupportedProperty(node.name, "Math", name));
25
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(node.name, "Math", name));
26
26
  }
27
27
  }
28
28
  exports.transformMathProperty = transformMathProperty;
29
29
  function transformMathCall(context, node) {
30
30
  const expression = node.expression;
31
31
  const signature = context.checker.getResolvedSignature(node);
32
- const params = call_1.transformArguments(context, node.arguments, signature);
32
+ const params = (0, call_1.transformArguments)(context, node.arguments, signature);
33
33
  const math = lua.createIdentifier("math");
34
34
  const expressionName = expression.name.text;
35
35
  switch (expressionName) {
@@ -37,7 +37,7 @@ function transformMathCall(context, node) {
37
37
  // Otherwise: math.atan2(y, x)
38
38
  case "atan2": {
39
39
  if (context.luaTarget === CompilerOptions_1.LuaTarget.Universal) {
40
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.MathAtan2, node, ...params);
40
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.MathAtan2, node, ...params);
41
41
  }
42
42
  const method = lua.createStringLiteral(context.luaTarget === CompilerOptions_1.LuaTarget.Lua53 ? "atan" : "atan2");
43
43
  return lua.createCallExpression(lua.createTableIndexExpression(math, method), params, node);
@@ -84,7 +84,7 @@ function transformMathCall(context, node) {
84
84
  return lua.createCallExpression(lua.createTableIndexExpression(math, method), params, node);
85
85
  }
86
86
  default:
87
- context.diagnostics.push(diagnostics_1.unsupportedProperty(expression.name, "Math", expressionName));
87
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(expression.name, "Math", expressionName));
88
88
  }
89
89
  }
90
90
  exports.transformMathCall = transformMathCall;
@@ -8,30 +8,30 @@ const call_1 = require("../visitors/call");
8
8
  function transformNumberPrototypeCall(context, node) {
9
9
  const expression = node.expression;
10
10
  const signature = context.checker.getResolvedSignature(node);
11
- const params = call_1.transformArguments(context, node.arguments, signature);
11
+ const params = (0, call_1.transformArguments)(context, node.arguments, signature);
12
12
  const caller = context.transformExpression(expression.expression);
13
13
  const expressionName = expression.name.text;
14
14
  switch (expressionName) {
15
15
  case "toString":
16
16
  return params.length === 0
17
17
  ? lua.createCallExpression(lua.createIdentifier("tostring"), [caller], node)
18
- : lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.NumberToString, node, caller, ...params);
18
+ : (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.NumberToString, node, caller, ...params);
19
19
  default:
20
- context.diagnostics.push(diagnostics_1.unsupportedProperty(expression.name, "number", expressionName));
20
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(expression.name, "number", expressionName));
21
21
  }
22
22
  }
23
23
  exports.transformNumberPrototypeCall = transformNumberPrototypeCall;
24
24
  function transformNumberConstructorCall(context, expression) {
25
25
  const method = expression.expression;
26
- const parameters = call_1.transformArguments(context, expression.arguments);
26
+ const parameters = (0, call_1.transformArguments)(context, expression.arguments);
27
27
  const methodName = method.name.text;
28
28
  switch (methodName) {
29
29
  case "isNaN":
30
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.NumberIsNaN, expression, ...parameters);
30
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.NumberIsNaN, expression, ...parameters);
31
31
  case "isFinite":
32
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.NumberIsFinite, expression, ...parameters);
32
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.NumberIsFinite, expression, ...parameters);
33
33
  default:
34
- context.diagnostics.push(diagnostics_1.unsupportedProperty(method.name, "Number", methodName));
34
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(method.name, "Number", methodName));
35
35
  }
36
36
  }
37
37
  exports.transformNumberConstructorCall = transformNumberConstructorCall;
@@ -1,5 +1,6 @@
1
1
  import * as lua from "../../LuaAST";
2
+ import * as ts from "typescript";
2
3
  import { TransformationContext } from "../context";
3
4
  import { PropertyCallExpression } from "../visitors/call";
4
5
  export declare function transformObjectConstructorCall(context: TransformationContext, expression: PropertyCallExpression): lua.Expression | undefined;
5
- export declare function transformObjectPrototypeCall(context: TransformationContext, node: PropertyCallExpression): lua.Expression | undefined;
6
+ export declare function transformObjectPrototypeCall(context: TransformationContext, node: ts.CallExpression, expression: ts.PropertyAccessExpression): lua.Expression | undefined;
@@ -7,32 +7,31 @@ const lualib_1 = require("../utils/lualib");
7
7
  const call_1 = require("../visitors/call");
8
8
  function transformObjectConstructorCall(context, expression) {
9
9
  const method = expression.expression;
10
- const args = call_1.transformArguments(context, expression.arguments);
10
+ const args = (0, call_1.transformArguments)(context, expression.arguments);
11
11
  const methodName = method.name.text;
12
12
  switch (methodName) {
13
13
  case "assign":
14
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ObjectAssign, expression, ...args);
14
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ObjectAssign, expression, ...args);
15
15
  case "defineProperty":
16
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ObjectDefineProperty, expression, ...args);
16
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ObjectDefineProperty, expression, ...args);
17
17
  case "entries":
18
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ObjectEntries, expression, ...args);
18
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ObjectEntries, expression, ...args);
19
19
  case "fromEntries":
20
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ObjectFromEntries, expression, ...args);
20
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ObjectFromEntries, expression, ...args);
21
21
  case "getOwnPropertyDescriptor":
22
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ObjectGetOwnPropertyDescriptor, expression, ...args);
22
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ObjectGetOwnPropertyDescriptor, expression, ...args);
23
23
  case "getOwnPropertyDescriptors":
24
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ObjectGetOwnPropertyDescriptors, expression, ...args);
24
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ObjectGetOwnPropertyDescriptors, expression, ...args);
25
25
  case "keys":
26
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ObjectKeys, expression, ...args);
26
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ObjectKeys, expression, ...args);
27
27
  case "values":
28
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ObjectValues, expression, ...args);
28
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ObjectValues, expression, ...args);
29
29
  default:
30
- context.diagnostics.push(diagnostics_1.unsupportedProperty(method.name, "Object", methodName));
30
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(method.name, "Object", methodName));
31
31
  }
32
32
  }
33
33
  exports.transformObjectConstructorCall = transformObjectConstructorCall;
34
- function transformObjectPrototypeCall(context, node) {
35
- const expression = node.expression;
34
+ function transformObjectPrototypeCall(context, node, expression) {
36
35
  const signature = context.checker.getResolvedSignature(node);
37
36
  const name = expression.name.text;
38
37
  switch (name) {
@@ -41,7 +40,7 @@ function transformObjectPrototypeCall(context, node) {
41
40
  return lua.createCallExpression(toStringIdentifier, [context.transformExpression(expression.expression)], node);
42
41
  case "hasOwnProperty":
43
42
  const expr = context.transformExpression(expression.expression);
44
- const parameters = call_1.transformArguments(context, node.arguments, signature);
43
+ const parameters = (0, call_1.transformArguments)(context, node.arguments, signature);
45
44
  const rawGetIdentifier = lua.createIdentifier("rawget");
46
45
  const rawGetCall = lua.createCallExpression(rawGetIdentifier, [expr, ...parameters]);
47
46
  return lua.createBinaryExpression(rawGetCall, lua.createNilLiteral(), lua.SyntaxKind.InequalityOperator, node);
@@ -8,7 +8,7 @@ const typescript_1 = require("../utils/typescript");
8
8
  const call_1 = require("../visitors/call");
9
9
  function isPromiseClass(context, node) {
10
10
  const type = context.checker.getTypeAtLocation(node);
11
- return typescript_1.isStandardLibraryType(context, type, undefined) && node.text === "Promise";
11
+ return (0, typescript_1.isStandardLibraryType)(context, type, undefined) && node.text === "Promise";
12
12
  }
13
13
  exports.isPromiseClass = isPromiseClass;
14
14
  function createPromiseIdentifier(original) {
@@ -18,25 +18,25 @@ exports.createPromiseIdentifier = createPromiseIdentifier;
18
18
  function transformPromiseConstructorCall(context, node) {
19
19
  const expression = node.expression;
20
20
  const signature = context.checker.getResolvedSignature(node);
21
- const params = call_1.transformArguments(context, node.arguments, signature);
21
+ const params = (0, call_1.transformArguments)(context, node.arguments, signature);
22
22
  const expressionName = expression.name.text;
23
23
  switch (expressionName) {
24
24
  case "all":
25
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.PromiseAll, node, ...params);
25
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.PromiseAll, node, ...params);
26
26
  case "allSettled":
27
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.PromiseAllSettled, node, ...params);
27
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.PromiseAllSettled, node, ...params);
28
28
  case "any":
29
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.PromiseAny, node, ...params);
29
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.PromiseAny, node, ...params);
30
30
  case "race":
31
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.PromiseRace, node, ...params);
31
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.PromiseRace, node, ...params);
32
32
  case "resolve":
33
- lualib_1.importLuaLibFeature(context, lualib_1.LuaLibFeature.Promise);
33
+ (0, lualib_1.importLuaLibFeature)(context, lualib_1.LuaLibFeature.Promise);
34
34
  return lua.createCallExpression(createStaticPromiseFunctionAccessor("resolve", expression), params, node);
35
35
  case "reject":
36
- lualib_1.importLuaLibFeature(context, lualib_1.LuaLibFeature.Promise);
36
+ (0, lualib_1.importLuaLibFeature)(context, lualib_1.LuaLibFeature.Promise);
37
37
  return lua.createCallExpression(createStaticPromiseFunctionAccessor("reject", expression), params, node);
38
38
  default:
39
- context.diagnostics.push(diagnostics_1.unsupportedProperty(expression.name, "Promise", expressionName));
39
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(expression.name, "Promise", expressionName));
40
40
  }
41
41
  }
42
42
  exports.transformPromiseConstructorCall = transformPromiseConstructorCall;