typescript-to-lua 1.0.1 → 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 (117) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/CompilerOptions.d.ts +4 -3
  3. package/dist/LuaAST.js +4 -4
  4. package/dist/LuaLib.d.ts +1 -0
  5. package/dist/LuaLib.js +1 -0
  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/Await.lua +26 -10
  12. package/dist/lualib/Promise.lua +20 -6
  13. package/dist/lualib/SourceMapTraceBack.lua +18 -8
  14. package/dist/lualib/StringReplace.lua +8 -13
  15. package/dist/lualib/StringReplaceAll.lua +35 -0
  16. package/dist/lualib/lualib_bundle.lua +106 -35
  17. package/dist/transformation/builtins/array.js +29 -29
  18. package/dist/transformation/builtins/console.js +2 -2
  19. package/dist/transformation/builtins/function.js +9 -9
  20. package/dist/transformation/builtins/global.js +8 -8
  21. package/dist/transformation/builtins/index.js +33 -33
  22. package/dist/transformation/builtins/math.js +4 -4
  23. package/dist/transformation/builtins/number.js +7 -7
  24. package/dist/transformation/builtins/object.js +11 -11
  25. package/dist/transformation/builtins/promise.js +9 -9
  26. package/dist/transformation/builtins/string.js +32 -30
  27. package/dist/transformation/builtins/symbol.js +3 -3
  28. package/dist/transformation/context/context.js +5 -5
  29. package/dist/transformation/index.js +1 -1
  30. package/dist/transformation/utils/annotations.d.ts +1 -3
  31. package/dist/transformation/utils/annotations.js +0 -2
  32. package/dist/transformation/utils/assignment-validation.js +8 -7
  33. package/dist/transformation/utils/diagnostics.js +4 -4
  34. package/dist/transformation/utils/export.js +4 -4
  35. package/dist/transformation/utils/function-context.js +8 -8
  36. package/dist/transformation/utils/lua-ast.js +18 -19
  37. package/dist/transformation/utils/lualib.js +1 -1
  38. package/dist/transformation/utils/safe-names.js +5 -5
  39. package/dist/transformation/utils/scope.d.ts +6 -0
  40. package/dist/transformation/utils/scope.js +70 -40
  41. package/dist/transformation/utils/symbols.js +6 -6
  42. package/dist/transformation/utils/transform.js +3 -3
  43. package/dist/transformation/utils/typescript/nodes.d.ts +2 -0
  44. package/dist/transformation/utils/typescript/nodes.js +21 -1
  45. package/dist/transformation/visitors/access.js +16 -16
  46. package/dist/transformation/visitors/async-await.js +5 -4
  47. package/dist/transformation/visitors/binary-expression/assignments.js +29 -29
  48. package/dist/transformation/visitors/binary-expression/bit.js +4 -4
  49. package/dist/transformation/visitors/binary-expression/compound.js +18 -18
  50. package/dist/transformation/visitors/binary-expression/destructuring-assignments.js +17 -17
  51. package/dist/transformation/visitors/binary-expression/index.js +21 -21
  52. package/dist/transformation/visitors/block.js +6 -6
  53. package/dist/transformation/visitors/break-continue.js +2 -2
  54. package/dist/transformation/visitors/call.js +35 -35
  55. package/dist/transformation/visitors/class/decorators.js +3 -3
  56. package/dist/transformation/visitors/class/index.js +34 -34
  57. package/dist/transformation/visitors/class/members/accessors.js +6 -6
  58. package/dist/transformation/visitors/class/members/constructor.js +7 -7
  59. package/dist/transformation/visitors/class/members/fields.js +6 -6
  60. package/dist/transformation/visitors/class/members/method.js +6 -6
  61. package/dist/transformation/visitors/class/new.js +12 -12
  62. package/dist/transformation/visitors/class/setup.js +11 -11
  63. package/dist/transformation/visitors/class/utils.js +2 -2
  64. package/dist/transformation/visitors/conditional.js +6 -6
  65. package/dist/transformation/visitors/delete.js +4 -4
  66. package/dist/transformation/visitors/enum.js +8 -8
  67. package/dist/transformation/visitors/errors.js +30 -30
  68. package/dist/transformation/visitors/expression-statement.js +10 -6
  69. package/dist/transformation/visitors/function.js +26 -26
  70. package/dist/transformation/visitors/identifier.js +22 -22
  71. package/dist/transformation/visitors/index.js +2 -2
  72. package/dist/transformation/visitors/language-extensions/iterable.js +7 -7
  73. package/dist/transformation/visitors/language-extensions/multi.d.ts +1 -1
  74. package/dist/transformation/visitors/language-extensions/multi.js +3 -3
  75. package/dist/transformation/visitors/language-extensions/operators.js +6 -6
  76. package/dist/transformation/visitors/language-extensions/range.js +6 -6
  77. package/dist/transformation/visitors/language-extensions/table.js +5 -5
  78. package/dist/transformation/visitors/literal.d.ts +1 -2
  79. package/dist/transformation/visitors/literal.js +19 -42
  80. package/dist/transformation/visitors/loops/do-while.js +2 -2
  81. package/dist/transformation/visitors/loops/for-in.js +4 -4
  82. package/dist/transformation/visitors/loops/for-of.js +13 -13
  83. package/dist/transformation/visitors/loops/for.js +3 -3
  84. package/dist/transformation/visitors/loops/utils.js +9 -9
  85. package/dist/transformation/visitors/modules/export.js +13 -13
  86. package/dist/transformation/visitors/modules/import.js +10 -10
  87. package/dist/transformation/visitors/namespace.js +13 -13
  88. package/dist/transformation/visitors/return.d.ts +1 -0
  89. package/dist/transformation/visitors/return.js +40 -26
  90. package/dist/transformation/visitors/sourceFile.js +8 -8
  91. package/dist/transformation/visitors/spread.js +11 -11
  92. package/dist/transformation/visitors/switch.js +34 -11
  93. package/dist/transformation/visitors/template.js +5 -5
  94. package/dist/transformation/visitors/typeof.js +2 -2
  95. package/dist/transformation/visitors/typescript.js +1 -1
  96. package/dist/transformation/visitors/unary-expression.js +9 -9
  97. package/dist/transformation/visitors/variable-declaration.js +28 -28
  98. package/dist/transformation/visitors/void.d.ts +6 -0
  99. package/dist/transformation/visitors/void.js +23 -0
  100. package/dist/transpilation/bundle.d.ts +3 -0
  101. package/dist/transpilation/bundle.js +52 -10
  102. package/dist/transpilation/diagnostics.js +3 -3
  103. package/dist/transpilation/index.js +2 -2
  104. package/dist/transpilation/output-collector.js +2 -2
  105. package/dist/transpilation/plugins.js +1 -1
  106. package/dist/transpilation/resolve.js +19 -12
  107. package/dist/transpilation/transformers.js +41 -24
  108. package/dist/transpilation/transpile.js +6 -6
  109. package/dist/transpilation/transpiler.js +8 -8
  110. package/dist/transpilation/utils.js +3 -2
  111. package/dist/tstl.js +8 -8
  112. package/dist/utils.js +2 -2
  113. package/package.json +15 -12
  114. package/dist/transformation/visitors/jsx/jsx.d.ts +0 -9
  115. package/dist/transformation/visitors/jsx/jsx.js +0 -237
  116. package/dist/transformation/visitors/jsx/xhtml.d.ts +0 -3
  117. package/dist/transformation/visitors/jsx/xhtml.js +0 -260
@@ -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;
@@ -7,27 +7,27 @@ 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;
@@ -41,7 +41,7 @@ function transformObjectPrototypeCall(context, node) {
41
41
  return lua.createCallExpression(toStringIdentifier, [context.transformExpression(expression.expression)], node);
42
42
  case "hasOwnProperty":
43
43
  const expr = context.transformExpression(expression.expression);
44
- const parameters = call_1.transformArguments(context, node.arguments, signature);
44
+ const parameters = (0, call_1.transformArguments)(context, node.arguments, signature);
45
45
  const rawGetIdentifier = lua.createIdentifier("rawget");
46
46
  const rawGetCall = lua.createCallExpression(rawGetIdentifier, [expr, ...parameters]);
47
47
  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;
@@ -13,35 +13,37 @@ function createStringCall(methodName, tsOriginal, ...params) {
13
13
  function transformStringPrototypeCall(context, node) {
14
14
  const expression = node.expression;
15
15
  const signature = context.checker.getResolvedSignature(node);
16
- const params = call_1.transformArguments(context, node.arguments, signature);
16
+ const params = (0, call_1.transformArguments)(context, node.arguments, signature);
17
17
  const caller = context.transformExpression(expression.expression);
18
18
  const expressionName = expression.name.text;
19
19
  switch (expressionName) {
20
20
  case "replace":
21
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.StringReplace, node, caller, ...params);
21
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.StringReplace, node, caller, ...params);
22
+ case "replaceAll":
23
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.StringReplaceAll, node, caller, ...params);
22
24
  case "concat":
23
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.StringConcat, node, caller, ...params);
25
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.StringConcat, node, caller, ...params);
24
26
  case "indexOf": {
25
27
  const stringExpression = createStringCall("find", node, caller, params[0], params[1]
26
28
  ? // string.find handles negative indexes by making it relative to string end, but for indexOf it's the same as 0
27
- lua.createCallExpression(lua.createTableIndexExpression(lua.createIdentifier("math"), lua.createStringLiteral("max")), [lua_ast_1.addToNumericExpression(params[1], 1), lua.createNumericLiteral(1)])
29
+ lua.createCallExpression(lua.createTableIndexExpression(lua.createIdentifier("math"), lua.createStringLiteral("max")), [(0, lua_ast_1.addToNumericExpression)(params[1], 1), lua.createNumericLiteral(1)])
28
30
  : lua.createNilLiteral(), lua.createBooleanLiteral(true));
29
31
  return lua.createBinaryExpression(lua.createBinaryExpression(stringExpression, lua.createNumericLiteral(0), lua.SyntaxKind.OrOperator), lua.createNumericLiteral(1), lua.SyntaxKind.SubtractionOperator, node);
30
32
  }
31
33
  case "substr":
32
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.StringSubstr, node, caller, ...params);
34
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.StringSubstr, node, caller, ...params);
33
35
  case "substring":
34
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.StringSubstring, node, caller, ...params);
36
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.StringSubstring, node, caller, ...params);
35
37
  case "slice": {
36
- const literalArg1 = lua_ast_1.getNumberLiteralValue(params[0]);
38
+ const literalArg1 = (0, lua_ast_1.getNumberLiteralValue)(params[0]);
37
39
  if (params[0] && literalArg1 !== undefined) {
38
40
  let stringSubArgs = [
39
- lua_ast_1.addToNumericExpression(params[0], literalArg1 < 0 ? 0 : 1),
41
+ (0, lua_ast_1.addToNumericExpression)(params[0], literalArg1 < 0 ? 0 : 1),
40
42
  ];
41
43
  if (params[1]) {
42
- const literalArg2 = lua_ast_1.getNumberLiteralValue(params[1]);
44
+ const literalArg2 = (0, lua_ast_1.getNumberLiteralValue)(params[1]);
43
45
  if (literalArg2 !== undefined) {
44
- stringSubArgs.push(lua_ast_1.addToNumericExpression(params[1], literalArg2 < 0 ? -1 : 0));
46
+ stringSubArgs.push((0, lua_ast_1.addToNumericExpression)(params[1], literalArg2 < 0 ? -1 : 0));
45
47
  }
46
48
  else {
47
49
  stringSubArgs = undefined;
@@ -52,69 +54,69 @@ function transformStringPrototypeCall(context, node) {
52
54
  return createStringCall("sub", node, caller, ...stringSubArgs);
53
55
  }
54
56
  }
55
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.StringSlice, node, caller, ...params);
57
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.StringSlice, node, caller, ...params);
56
58
  }
57
59
  case "toLowerCase":
58
60
  return createStringCall("lower", node, caller);
59
61
  case "toUpperCase":
60
62
  return createStringCall("upper", node, caller);
61
63
  case "trim":
62
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.StringTrim, node, caller);
64
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.StringTrim, node, caller);
63
65
  case "trimEnd":
64
66
  case "trimRight":
65
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.StringTrimEnd, node, caller);
67
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.StringTrimEnd, node, caller);
66
68
  case "trimStart":
67
69
  case "trimLeft":
68
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.StringTrimStart, node, caller);
70
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.StringTrimStart, node, caller);
69
71
  case "split":
70
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.StringSplit, node, caller, ...params);
72
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.StringSplit, node, caller, ...params);
71
73
  case "charAt": {
72
- const literalValue = lua_ast_1.getNumberLiteralValue(params[0]);
74
+ const literalValue = (0, lua_ast_1.getNumberLiteralValue)(params[0]);
73
75
  // Inline string.sub call if we know that parameter is pure and isn't negative
74
76
  if (literalValue !== undefined && literalValue >= 0) {
75
- const firstParamPlusOne = lua_ast_1.addToNumericExpression(params[0], 1);
77
+ const firstParamPlusOne = (0, lua_ast_1.addToNumericExpression)(params[0], 1);
76
78
  return createStringCall("sub", node, caller, firstParamPlusOne, firstParamPlusOne);
77
79
  }
78
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.StringCharAt, node, caller, ...params);
80
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.StringCharAt, node, caller, ...params);
79
81
  }
80
82
  case "charCodeAt": {
81
- const literalValue = lua_ast_1.getNumberLiteralValue(params[0]);
83
+ const literalValue = (0, lua_ast_1.getNumberLiteralValue)(params[0]);
82
84
  // Inline string.sub call if we know that parameter is pure and isn't negative
83
85
  if (literalValue !== undefined && literalValue >= 0) {
84
- return lua.createBinaryExpression(createStringCall("byte", node, caller, lua_ast_1.addToNumericExpression(params[0], 1)), lua_ast_1.createNaN(), lua.SyntaxKind.OrOperator);
86
+ return lua.createBinaryExpression(createStringCall("byte", node, caller, (0, lua_ast_1.addToNumericExpression)(params[0], 1)), (0, lua_ast_1.createNaN)(), lua.SyntaxKind.OrOperator);
85
87
  }
86
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.StringCharCodeAt, node, caller, ...params);
88
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.StringCharCodeAt, node, caller, ...params);
87
89
  }
88
90
  case "startsWith":
89
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.StringStartsWith, node, caller, ...params);
91
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.StringStartsWith, node, caller, ...params);
90
92
  case "endsWith":
91
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.StringEndsWith, node, caller, ...params);
93
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.StringEndsWith, node, caller, ...params);
92
94
  case "includes":
93
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.StringIncludes, node, caller, ...params);
95
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.StringIncludes, node, caller, ...params);
94
96
  case "repeat":
95
97
  const math = lua.createIdentifier("math");
96
98
  const floor = lua.createStringLiteral("floor");
97
99
  const parameter = lua.createCallExpression(lua.createTableIndexExpression(math, floor), [params[0]]);
98
100
  return createStringCall("rep", node, caller, parameter);
99
101
  case "padStart":
100
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.StringPadStart, node, caller, ...params);
102
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.StringPadStart, node, caller, ...params);
101
103
  case "padEnd":
102
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.StringPadEnd, node, caller, ...params);
104
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.StringPadEnd, node, caller, ...params);
103
105
  default:
104
- context.diagnostics.push(diagnostics_1.unsupportedProperty(expression.name, "string", expressionName));
106
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(expression.name, "string", expressionName));
105
107
  }
106
108
  }
107
109
  exports.transformStringPrototypeCall = transformStringPrototypeCall;
108
110
  function transformStringConstructorCall(context, node) {
109
111
  const expression = node.expression;
110
112
  const signature = context.checker.getResolvedSignature(node);
111
- const params = call_1.transformArguments(context, node.arguments, signature);
113
+ const params = (0, call_1.transformArguments)(context, node.arguments, signature);
112
114
  const expressionName = expression.name.text;
113
115
  switch (expressionName) {
114
116
  case "fromCharCode":
115
117
  return lua.createCallExpression(lua.createTableIndexExpression(lua.createIdentifier("string"), lua.createStringLiteral("char")), params, node);
116
118
  default:
117
- context.diagnostics.push(diagnostics_1.unsupportedProperty(expression.name, "String", expressionName));
119
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(expression.name, "String", expressionName));
118
120
  }
119
121
  }
120
122
  exports.transformStringConstructorCall = transformStringConstructorCall;
@@ -124,7 +126,7 @@ function transformStringProperty(context, node) {
124
126
  const expression = context.transformExpression(node.expression);
125
127
  return lua.createUnaryExpression(expression, lua.SyntaxKind.LengthOperator, node);
126
128
  default:
127
- context.diagnostics.push(diagnostics_1.unsupportedProperty(node.name, "string", node.name.text));
129
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(node.name, "string", node.name.text));
128
130
  }
129
131
  }
130
132
  exports.transformStringProperty = transformStringProperty;
@@ -8,17 +8,17 @@ const call_1 = require("../visitors/call");
8
8
  function transformSymbolConstructorCall(context, expression) {
9
9
  const method = expression.expression;
10
10
  const signature = context.checker.getResolvedSignature(expression);
11
- const parameters = call_1.transformArguments(context, expression.arguments, signature);
11
+ const parameters = (0, call_1.transformArguments)(context, expression.arguments, signature);
12
12
  const methodName = method.name.text;
13
13
  switch (methodName) {
14
14
  case "for":
15
15
  case "keyFor":
16
- lualib_1.importLuaLibFeature(context, lualib_1.LuaLibFeature.SymbolRegistry);
16
+ (0, lualib_1.importLuaLibFeature)(context, lualib_1.LuaLibFeature.SymbolRegistry);
17
17
  const upperMethodName = methodName[0].toUpperCase() + methodName.slice(1);
18
18
  const functionIdentifier = lua.createIdentifier(`__TS__SymbolRegistry${upperMethodName}`);
19
19
  return lua.createCallExpression(functionIdentifier, parameters, expression);
20
20
  default:
21
- context.diagnostics.push(diagnostics_1.unsupportedProperty(method.name, "Symbol", methodName));
21
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(method.name, "Symbol", methodName));
22
22
  }
23
23
  }
24
24
  exports.transformSymbolConstructorCall = transformSymbolConstructorCall;
@@ -35,13 +35,13 @@ class TransformationContext {
35
35
  }
36
36
  const nodeVisitors = this.visitorMap.get(node.kind);
37
37
  if (!nodeVisitors || nodeVisitors.length === 0) {
38
- this.diagnostics.push(diagnostics_1.unsupportedNodeKind(node, node.kind));
38
+ this.diagnostics.push((0, diagnostics_1.unsupportedNodeKind)(node, node.kind));
39
39
  return isExpression ? [lua.createNilLiteral()] : [];
40
40
  }
41
41
  const previousNodeVisitors = this.currentNodeVisitors;
42
42
  this.currentNodeVisitors = [...nodeVisitors];
43
43
  const visitor = this.currentNodeVisitors.pop();
44
- const result = lua_ast_1.unwrapVisitorResult(visitor.transform(node, this));
44
+ const result = (0, lua_ast_1.unwrapVisitorResult)(visitor.transform(node, this));
45
45
  this.currentNodeVisitors = previousNodeVisitors;
46
46
  return result;
47
47
  }
@@ -50,7 +50,7 @@ class TransformationContext {
50
50
  throw new Error(`There is no super transform for ${ts.SyntaxKind[node.kind]} visitor`);
51
51
  }
52
52
  const visitor = this.currentNodeVisitors.pop();
53
- return lua_ast_1.unwrapVisitorResult(visitor.transform(node, this));
53
+ return (0, lua_ast_1.unwrapVisitorResult)(visitor.transform(node, this));
54
54
  }
55
55
  transformExpression(node) {
56
56
  const [result] = this.transformNode(node, true);
@@ -67,10 +67,10 @@ class TransformationContext {
67
67
  return result;
68
68
  }
69
69
  transformStatements(node) {
70
- return utils_1.castArray(node).flatMap(n => this.transformNode(n));
70
+ return (0, utils_1.castArray)(node).flatMap(n => this.transformNode(n));
71
71
  }
72
72
  superTransformStatements(node) {
73
- return utils_1.castArray(node).flatMap(n => this.superTransformNode(n));
73
+ return (0, utils_1.castArray)(node).flatMap(n => this.superTransformNode(n));
74
74
  }
75
75
  }
76
76
  exports.TransformationContext = TransformationContext;
@@ -12,7 +12,7 @@ function createVisitorMap(customVisitors) {
12
12
  if (!visitor)
13
13
  continue;
14
14
  const syntaxKind = Number(syntaxKindKey);
15
- const nodeVisitors = utils_1.getOrUpdate(visitorMap, syntaxKind, () => []);
15
+ const nodeVisitors = (0, utils_1.getOrUpdate)(visitorMap, syntaxKind, () => []);
16
16
  const objectVisitor = typeof visitor === "function" ? { transform: visitor, priority } : visitor;
17
17
  nodeVisitors.push(objectVisitor);
18
18
  }
@@ -14,9 +14,7 @@ export declare enum AnnotationKind {
14
14
  NoSelf = "noSelf",
15
15
  NoSelfInFile = "noSelfInFile",
16
16
  Vararg = "vararg",
17
- ForRange = "forRange",
18
- Jsx = "jsx",
19
- JsxFrag = "jsxFrag"
17
+ ForRange = "forRange"
20
18
  }
21
19
  export interface Annotation {
22
20
  kind: AnnotationKind;
@@ -18,8 +18,6 @@ var AnnotationKind;
18
18
  AnnotationKind["NoSelfInFile"] = "noSelfInFile";
19
19
  AnnotationKind["Vararg"] = "vararg";
20
20
  AnnotationKind["ForRange"] = "forRange";
21
- AnnotationKind["Jsx"] = "jsx";
22
- AnnotationKind["JsxFrag"] = "jsxFrag";
23
21
  })(AnnotationKind = exports.AnnotationKind || (exports.AnnotationKind = {}));
24
22
  function createAnnotation(name, args) {
25
23
  const kind = Object.values(AnnotationKind).find(k => k.toLowerCase() === name.toLowerCase());
@@ -16,7 +16,7 @@ function validateAssignment(context, node, fromType, toType, toName) {
16
16
  return;
17
17
  }
18
18
  // Use cache to avoid repeating check for same types (protects against infinite loop in recursive types)
19
- const fromTypeCache = utils_1.getOrUpdate(typeValidationCache, fromType, () => new Set());
19
+ const fromTypeCache = (0, utils_1.getOrUpdate)(typeValidationCache, fromType, () => new Set());
20
20
  if (fromTypeCache.has(toType))
21
21
  return;
22
22
  fromTypeCache.add(toType);
@@ -40,7 +40,8 @@ function validateAssignment(context, node, fromType, toType, toName) {
40
40
  }
41
41
  }
42
42
  if ((toType.flags & ts.TypeFlags.Object) !== 0 &&
43
- (toType.objectFlags & ts.ObjectFlags.ClassOrInterface) !== 0 &&
43
+ (ts.isTypeLiteralNode(toTypeNode) ||
44
+ (toType.objectFlags & ts.ObjectFlags.ClassOrInterface) !== 0) &&
44
45
  toType.symbol &&
45
46
  toType.symbol.members &&
46
47
  fromType.symbol &&
@@ -61,15 +62,15 @@ function validateAssignment(context, node, fromType, toType, toName) {
61
62
  }
62
63
  exports.validateAssignment = validateAssignment;
63
64
  function validateFunctionAssignment(context, node, fromType, toType, toName) {
64
- const fromContext = function_context_1.getFunctionContextType(context, fromType);
65
- const toContext = function_context_1.getFunctionContextType(context, toType);
65
+ const fromContext = (0, function_context_1.getFunctionContextType)(context, fromType);
66
+ const toContext = (0, function_context_1.getFunctionContextType)(context, toType);
66
67
  if (fromContext === function_context_1.ContextType.Mixed || toContext === function_context_1.ContextType.Mixed) {
67
- context.diagnostics.push(diagnostics_1.unsupportedOverloadAssignment(node, toName));
68
+ context.diagnostics.push((0, diagnostics_1.unsupportedOverloadAssignment)(node, toName));
68
69
  }
69
70
  else if (fromContext !== toContext && fromContext !== function_context_1.ContextType.None && toContext !== function_context_1.ContextType.None) {
70
71
  context.diagnostics.push(toContext === function_context_1.ContextType.Void
71
- ? diagnostics_1.unsupportedNoSelfFunctionConversion(node, toName)
72
- : diagnostics_1.unsupportedSelfFunctionConversion(node, toName));
72
+ ? (0, diagnostics_1.unsupportedNoSelfFunctionConversion)(node, toName)
73
+ : (0, diagnostics_1.unsupportedSelfFunctionConversion)(node, toName));
73
74
  }
74
75
  }
75
76
  //# sourceMappingURL=assignment-validation.js.map
@@ -4,10 +4,10 @@ exports.awaitMustBeInAsyncFunction = exports.notAllowedOptionalAssignment = expo
4
4
  const ts = require("typescript");
5
5
  const CompilerOptions_1 = require("../../CompilerOptions");
6
6
  const utils_1 = require("../../utils");
7
- const createDiagnosticFactory = (category, message) => utils_1.createSerialDiagnosticFactory((node, ...args) => ({
8
- file: node.getSourceFile(),
9
- start: node.getStart(),
10
- length: node.getWidth(),
7
+ const createDiagnosticFactory = (category, message) => (0, utils_1.createSerialDiagnosticFactory)((node, ...args) => ({
8
+ file: ts.getOriginalNode(node).getSourceFile(),
9
+ start: ts.getOriginalNode(node).getStart(),
10
+ length: ts.getOriginalNode(node).getWidth(),
11
11
  messageText: typeof message === "string" ? message : message(...args),
12
12
  category,
13
13
  }));
@@ -25,7 +25,7 @@ function getExportedSymbolDeclaration(symbol) {
25
25
  exports.getExportedSymbolDeclaration = getExportedSymbolDeclaration;
26
26
  function getSymbolFromIdentifier(context, identifier) {
27
27
  if (identifier.symbolId !== undefined) {
28
- const symbolInfo = symbols_1.getSymbolInfo(context, identifier.symbolId);
28
+ const symbolInfo = (0, symbols_1.getSymbolInfo)(context, identifier.symbolId);
29
29
  if (symbolInfo !== undefined) {
30
30
  return symbolInfo.symbol;
31
31
  }
@@ -48,7 +48,7 @@ function getSymbolExportScope(context, symbol) {
48
48
  if (!exportedDeclaration) {
49
49
  return undefined;
50
50
  }
51
- const scope = typescript_1.findFirstNodeAbove(exportedDeclaration, (n) => ts.isSourceFile(n) || ts.isModuleDeclaration(n));
51
+ const scope = (0, typescript_1.findFirstNodeAbove)(exportedDeclaration, (n) => ts.isSourceFile(n) || ts.isModuleDeclaration(n));
52
52
  if (!scope) {
53
53
  return undefined;
54
54
  }
@@ -98,8 +98,8 @@ function createExportedIdentifier(context, identifier, exportScope) {
98
98
  return identifier;
99
99
  }
100
100
  const exportTable = exportScope && ts.isModuleDeclaration(exportScope)
101
- ? namespace_1.createModuleLocalNameIdentifier(context, exportScope)
102
- : lua_ast_1.createExportsIdentifier();
101
+ ? (0, namespace_1.createModuleLocalNameIdentifier)(context, exportScope)
102
+ : (0, lua_ast_1.createExportsIdentifier)();
103
103
  return lua.createTableIndexExpression(exportTable, lua.createStringLiteral(identifier.text));
104
104
  }
105
105
  exports.createExportedIdentifier = createExportedIdentifier;
@@ -12,14 +12,14 @@ var ContextType;
12
12
  ContextType[ContextType["Mixed"] = 3] = "Mixed";
13
13
  })(ContextType = exports.ContextType || (exports.ContextType = {}));
14
14
  function hasNoSelfAncestor(declaration) {
15
- const scopeDeclaration = typescript_1.findFirstNodeAbove(declaration, (node) => ts.isSourceFile(node) || ts.isModuleDeclaration(node));
15
+ const scopeDeclaration = (0, typescript_1.findFirstNodeAbove)(declaration, (node) => ts.isSourceFile(node) || ts.isModuleDeclaration(node));
16
16
  if (!scopeDeclaration) {
17
17
  return false;
18
18
  }
19
19
  else if (ts.isSourceFile(scopeDeclaration)) {
20
- return annotations_1.getFileAnnotations(scopeDeclaration).has(annotations_1.AnnotationKind.NoSelfInFile);
20
+ return (0, annotations_1.getFileAnnotations)(scopeDeclaration).has(annotations_1.AnnotationKind.NoSelfInFile);
21
21
  }
22
- else if (annotations_1.getNodeAnnotations(scopeDeclaration).has(annotations_1.AnnotationKind.NoSelf)) {
22
+ else if ((0, annotations_1.getNodeAnnotations)(scopeDeclaration).has(annotations_1.AnnotationKind.NoSelf)) {
23
23
  return true;
24
24
  }
25
25
  else {
@@ -38,7 +38,7 @@ function getDeclarationContextType({ program }, signatureDeclaration) {
38
38
  : ContextType.NonVoid;
39
39
  }
40
40
  // noSelf declaration on function signature
41
- if (annotations_1.getNodeAnnotations(signatureDeclaration).has(annotations_1.AnnotationKind.NoSelf)) {
41
+ if ((0, annotations_1.getNodeAnnotations)(signatureDeclaration).has(annotations_1.AnnotationKind.NoSelf)) {
42
42
  return ContextType.Void;
43
43
  }
44
44
  if (ts.isMethodSignature(signatureDeclaration) ||
@@ -48,11 +48,11 @@ function getDeclarationContextType({ program }, signatureDeclaration) {
48
48
  (signatureDeclaration.parent && ts.isPropertyDeclaration(signatureDeclaration.parent)) ||
49
49
  (signatureDeclaration.parent && ts.isPropertySignature(signatureDeclaration.parent))) {
50
50
  // Class/interface methods only respect @noSelf on their parent
51
- const scopeDeclaration = typescript_1.findFirstNodeAbove(signatureDeclaration, (n) => ts.isClassDeclaration(n) || ts.isClassExpression(n) || ts.isInterfaceDeclaration(n));
51
+ const scopeDeclaration = (0, typescript_1.findFirstNodeAbove)(signatureDeclaration, (n) => ts.isClassDeclaration(n) || ts.isClassExpression(n) || ts.isInterfaceDeclaration(n));
52
52
  if (scopeDeclaration === undefined) {
53
53
  return ContextType.NonVoid;
54
54
  }
55
- if (annotations_1.getNodeAnnotations(scopeDeclaration).has(annotations_1.AnnotationKind.NoSelf)) {
55
+ if ((0, annotations_1.getNodeAnnotations)(scopeDeclaration).has(annotations_1.AnnotationKind.NoSelf)) {
56
56
  return ContextType.Void;
57
57
  }
58
58
  return ContextType.NonVoid;
@@ -98,10 +98,10 @@ function getSignatureDeclarations(context, signatures) {
98
98
  else if ((ts.isFunctionExpression(signatureDeclaration) || ts.isArrowFunction(signatureDeclaration)) &&
99
99
  !getExplicitThisParameter(signatureDeclaration)) {
100
100
  // Infer type of function expressions/arrow functions
101
- inferredType = typescript_1.inferAssignedType(context, signatureDeclaration);
101
+ inferredType = (0, typescript_1.inferAssignedType)(context, signatureDeclaration);
102
102
  }
103
103
  if (inferredType) {
104
- const inferredSignatures = typescript_1.getAllCallSignatures(inferredType);
104
+ const inferredSignatures = (0, typescript_1.getAllCallSignatures)(inferredType);
105
105
  if (inferredSignatures.length > 0) {
106
106
  return inferredSignatures.map(s => s.getDeclaration());
107
107
  }
@@ -10,7 +10,7 @@ const scope_1 = require("./scope");
10
10
  const lualib_1 = require("./lualib");
11
11
  const LuaLib_1 = require("../../LuaLib");
12
12
  function unwrapVisitorResult(result) {
13
- return result === undefined ? [] : utils_1.castArray(result);
13
+ return result === undefined ? [] : (0, utils_1.castArray)(result);
14
14
  }
15
15
  exports.unwrapVisitorResult = unwrapVisitorResult;
16
16
  function createSelfIdentifier(tsOriginal) {
@@ -58,7 +58,7 @@ exports.getNumberLiteralValue = getNumberLiteralValue;
58
58
  // Prefer use of transformToImmediatelyInvokedFunctionExpression to maintain correct scope. If you use this directly,
59
59
  // ensure you push/pop a function scope appropriately to avoid incorrect vararg optimization.
60
60
  function createImmediatelyInvokedFunctionExpression(statements, result, tsOriginal) {
61
- const body = [...statements, lua.createReturnStatement(utils_1.castArray(result))];
61
+ const body = [...statements, lua.createReturnStatement((0, utils_1.castArray)(result))];
62
62
  const flags = statements.length === 0 ? lua.FunctionExpressionFlags.Inline : lua.FunctionExpressionFlags.None;
63
63
  const iife = lua.createFunctionExpression(lua.createBlock(body), undefined, undefined, flags);
64
64
  return lua.createCallExpression(iife, [], tsOriginal);
@@ -66,7 +66,7 @@ function createImmediatelyInvokedFunctionExpression(statements, result, tsOrigin
66
66
  exports.createImmediatelyInvokedFunctionExpression = createImmediatelyInvokedFunctionExpression;
67
67
  function createUnpackCall(context, expression, tsOriginal) {
68
68
  if (context.luaTarget === CompilerOptions_1.LuaTarget.Universal) {
69
- return lualib_1.transformLuaLibFunction(context, LuaLib_1.LuaLibFeature.Unpack, tsOriginal, expression);
69
+ return (0, lualib_1.transformLuaLibFunction)(context, LuaLib_1.LuaLibFeature.Unpack, tsOriginal, expression);
70
70
  }
71
71
  const unpack = context.luaTarget === CompilerOptions_1.LuaTarget.Lua51 || context.luaTarget === CompilerOptions_1.LuaTarget.LuaJIT
72
72
  ? lua.createIdentifier("unpack")
@@ -91,8 +91,8 @@ exports.wrapInToStringForConcat = wrapInToStringForConcat;
91
91
  function createHoistableVariableDeclarationStatement(context, identifier, initializer, tsOriginal) {
92
92
  const declaration = lua.createVariableDeclarationStatement(identifier, initializer, tsOriginal);
93
93
  if (identifier.symbolId !== undefined) {
94
- const scope = scope_1.peekScope(context);
95
- utils_1.assert(scope.type !== scope_1.ScopeType.Switch);
94
+ const scope = (0, scope_1.peekScope)(context);
95
+ (0, utils_1.assert)(scope.type !== scope_1.ScopeType.Switch);
96
96
  if (!scope.variableDeclarations) {
97
97
  scope.variableDeclarations = [];
98
98
  }
@@ -106,32 +106,32 @@ function hasMultipleReferences(scope, identifiers) {
106
106
  if (!scopeSymbols) {
107
107
  return false;
108
108
  }
109
- const referenceLists = utils_1.castArray(identifiers).map(i => i.symbolId && scopeSymbols.get(i.symbolId));
109
+ const referenceLists = (0, utils_1.castArray)(identifiers).map(i => i.symbolId && scopeSymbols.get(i.symbolId));
110
110
  return referenceLists.some(symbolRefs => symbolRefs && symbolRefs.length > 1);
111
111
  }
112
112
  function createLocalOrExportedOrGlobalDeclaration(context, lhs, rhs, tsOriginal, overrideExportScope) {
113
113
  let declaration;
114
114
  let assignment;
115
115
  const isFunctionDeclaration = tsOriginal !== undefined && ts.isFunctionDeclaration(tsOriginal);
116
- const identifiers = utils_1.castArray(lhs);
116
+ const identifiers = (0, utils_1.castArray)(lhs);
117
117
  if (identifiers.length === 0) {
118
118
  return [];
119
119
  }
120
- const exportScope = overrideExportScope !== null && overrideExportScope !== void 0 ? overrideExportScope : export_1.getIdentifierExportScope(context, identifiers[0]);
120
+ const exportScope = overrideExportScope !== null && overrideExportScope !== void 0 ? overrideExportScope : (0, export_1.getIdentifierExportScope)(context, identifiers[0]);
121
121
  if (exportScope) {
122
122
  // exported
123
123
  if (!rhs) {
124
124
  return [];
125
125
  }
126
126
  else {
127
- assignment = lua.createAssignmentStatement(identifiers.map(identifier => export_1.createExportedIdentifier(context, identifier, exportScope)), rhs, tsOriginal);
127
+ assignment = lua.createAssignmentStatement(identifiers.map(identifier => (0, export_1.createExportedIdentifier)(context, identifier, exportScope)), rhs, tsOriginal);
128
128
  }
129
129
  }
130
130
  else {
131
- const scope = scope_1.peekScope(context);
131
+ const scope = (0, scope_1.peekScope)(context);
132
132
  const isTopLevelVariable = scope.type === scope_1.ScopeType.File;
133
133
  if (context.isModule || !isTopLevelVariable) {
134
- if (scope.type === scope_1.ScopeType.Switch || (!isFunctionDeclaration && hasMultipleReferences(scope, lhs))) {
134
+ if (!isFunctionDeclaration && hasMultipleReferences(scope, lhs)) {
135
135
  // Split declaration and assignment of identifiers that reference themselves in their declaration
136
136
  declaration = lua.createVariableDeclarationStatement(lhs, undefined, tsOriginal);
137
137
  if (rhs) {
@@ -141,13 +141,12 @@ function createLocalOrExportedOrGlobalDeclaration(context, lhs, rhs, tsOriginal,
141
141
  else {
142
142
  declaration = lua.createVariableDeclarationStatement(lhs, rhs, tsOriginal);
143
143
  }
144
- // Remember local variable declarations for hoisting later
145
- if (!scope.variableDeclarations) {
146
- scope.variableDeclarations = [];
147
- }
148
- scope.variableDeclarations.push(declaration);
149
- if (scope.type === scope_1.ScopeType.Switch) {
150
- declaration = undefined;
144
+ if (!isFunctionDeclaration) {
145
+ // Remember local variable declarations for hoisting later
146
+ if (!scope.variableDeclarations) {
147
+ scope.variableDeclarations = [];
148
+ }
149
+ scope.variableDeclarations.push(declaration);
151
150
  }
152
151
  }
153
152
  else if (rhs) {
@@ -161,7 +160,7 @@ function createLocalOrExportedOrGlobalDeclaration(context, lhs, rhs, tsOriginal,
161
160
  if (isFunctionDeclaration) {
162
161
  // Remember function definitions for hoisting later
163
162
  const functionSymbolId = lhs.symbolId;
164
- const scope = scope_1.peekScope(context);
163
+ const scope = (0, scope_1.peekScope)(context);
165
164
  if (functionSymbolId && scope.functionDefinitions) {
166
165
  const definitions = scope.functionDefinitions.get(functionSymbolId);
167
166
  if (definitions) {
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "LuaLibFeature", { enumerable: true, get: functio
7
7
  const utils_1 = require("../../utils");
8
8
  const luaLibFeatures = new WeakMap();
9
9
  function getUsedLuaLibFeatures(context) {
10
- return utils_1.getOrUpdate(luaLibFeatures, context, () => new Set());
10
+ return (0, utils_1.getOrUpdate)(luaLibFeatures, context, () => new Set());
11
11
  }
12
12
  exports.getUsedLuaLibFeatures = getUsedLuaLibFeatures;
13
13
  function importLuaLibFeature(context, feature) {