typescript-to-lua 1.3.1 → 1.3.4

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.
package/dist/LuaLib.d.ts CHANGED
@@ -42,6 +42,7 @@ export declare enum LuaLibFeature {
42
42
  Iterator = "Iterator",
43
43
  Map = "Map",
44
44
  MathAtan2 = "MathAtan2",
45
+ MathSign = "MathSign",
45
46
  New = "New",
46
47
  Number = "Number",
47
48
  NumberIsFinite = "NumberIsFinite",
package/dist/LuaLib.js CHANGED
@@ -46,6 +46,7 @@ var LuaLibFeature;
46
46
  LuaLibFeature["Iterator"] = "Iterator";
47
47
  LuaLibFeature["Map"] = "Map";
48
48
  LuaLibFeature["MathAtan2"] = "MathAtan2";
49
+ LuaLibFeature["MathSign"] = "MathSign";
49
50
  LuaLibFeature["New"] = "New";
50
51
  LuaLibFeature["Number"] = "Number";
51
52
  LuaLibFeature["NumberIsFinite"] = "NumberIsFinite";
@@ -0,0 +1,8 @@
1
+ function __TS__MathSign(val)
2
+ if val > 0 then
3
+ return 1
4
+ elseif val < 0 then
5
+ return -1
6
+ end
7
+ return 0
8
+ end
@@ -1335,6 +1335,15 @@ Map = Map
1335
1335
 
1336
1336
  __TS__MathAtan2 = math.atan2 or math.atan
1337
1337
 
1338
+ function __TS__MathSign(val)
1339
+ if val > 0 then
1340
+ return 1
1341
+ elseif val < 0 then
1342
+ return -1
1343
+ end
1344
+ return 0
1345
+ end
1346
+
1338
1347
  function __TS__Number(value)
1339
1348
  local valueType = type(value)
1340
1349
  if valueType == "number" then
@@ -57,6 +57,10 @@ function transformMathCall(context, node) {
57
57
  const add = lua.createBinaryExpression(one, params[0], lua.SyntaxKind.AdditionOperator);
58
58
  return lua.createCallExpression(lua.createTableIndexExpression(math, log), [add], node);
59
59
  }
60
+ case "pow": {
61
+ // Translate to base ^ power
62
+ return lua.createBinaryExpression(params[0], params[1], lua.SyntaxKind.PowerOperator, node);
63
+ }
60
64
  // math.floor(x + 0.5)
61
65
  case "round": {
62
66
  const floor = lua.createStringLiteral("floor");
@@ -64,6 +68,9 @@ function transformMathCall(context, node) {
64
68
  const add = lua.createBinaryExpression(params[0], half, lua.SyntaxKind.AdditionOperator);
65
69
  return lua.createCallExpression(lua.createTableIndexExpression(math, floor), [add], node);
66
70
  }
71
+ case "sign": {
72
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.MathSign, node, ...params);
73
+ }
67
74
  case "abs":
68
75
  case "acos":
69
76
  case "asin":
@@ -75,7 +82,6 @@ function transformMathCall(context, node) {
75
82
  case "log":
76
83
  case "max":
77
84
  case "min":
78
- case "pow":
79
85
  case "random":
80
86
  case "sin":
81
87
  case "sqrt":
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.transformStaticPropertyDeclaration = exports.transformClassInstanceFields = exports.createPropertyDecoratingExpression = void 0;
4
4
  const lua = require("../../../../LuaAST");
5
5
  const lua_ast_1 = require("../../../utils/lua-ast");
6
+ const preceding_statements_1 = require("../../../utils/preceding-statements");
6
7
  const literal_1 = require("../../literal");
7
8
  const decorators_1 = require("../decorators");
8
9
  const method_1 = require("./method");
@@ -17,14 +18,17 @@ exports.createPropertyDecoratingExpression = createPropertyDecoratingExpression;
17
18
  function transformClassInstanceFields(context, instanceFields) {
18
19
  const statements = [];
19
20
  for (const f of instanceFields) {
20
- // Get identifier
21
- const fieldName = (0, literal_1.transformPropertyName)(context, f.name);
22
- const value = f.initializer ? context.transformExpression(f.initializer) : undefined;
23
- // self[fieldName]
24
- const selfIndex = lua.createTableIndexExpression((0, lua_ast_1.createSelfIdentifier)(), fieldName);
25
- // self[fieldName] = value
26
- const assignClassField = lua.createAssignmentStatement(selfIndex, value, f);
27
- statements.push(assignClassField);
21
+ const [precedingStatements, statement] = (0, preceding_statements_1.transformInPrecedingStatementScope)(context, () => {
22
+ // Get identifier
23
+ const fieldName = (0, literal_1.transformPropertyName)(context, f.name);
24
+ const value = f.initializer ? context.transformExpression(f.initializer) : undefined;
25
+ // self[fieldName]
26
+ const selfIndex = lua.createTableIndexExpression((0, lua_ast_1.createSelfIdentifier)(), fieldName);
27
+ // self[fieldName] = value
28
+ const assignClassField = lua.createAssignmentStatement(selfIndex, value, f);
29
+ return assignClassField;
30
+ });
31
+ statements.push(...precedingStatements, statement);
28
32
  }
29
33
  return statements;
30
34
  }
@@ -135,14 +135,14 @@ function resolveFileDependencies(file, context) {
135
135
  dependencies.push(...resolvedDependency.resolvedFiles);
136
136
  diagnostics.push(...resolvedDependency.diagnostics);
137
137
  }
138
- return { resolvedFiles: dependencies, diagnostics };
138
+ return { resolvedFiles: deduplicateResolvedFiles(dependencies), diagnostics };
139
139
  }
140
140
  function resolveDependency(requiringFile, dependency, program, emitHost) {
141
141
  var _a;
142
142
  const options = program.getCompilerOptions();
143
143
  const fileDirectory = path.dirname(requiringFile.fileName);
144
144
  if (options.tstlVerbose) {
145
- console.log(`Resolving "${dependency}" from ${(0, utils_1.normalizeSlashes)(fileDirectory)}`);
145
+ console.log(`Resolving "${dependency}" from ${(0, utils_1.normalizeSlashes)(requiringFile.fileName)}`);
146
146
  }
147
147
  // Check if the import is relative
148
148
  const isRelative = ["/", "./", "../"].some(p => dependency.startsWith(p));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typescript-to-lua",
3
- "version": "1.3.1",
3
+ "version": "1.3.4",
4
4
  "description": "A generic TypeScript to Lua transpiler. Write your code in TypeScript and publish Lua!",
5
5
  "repository": "https://github.com/TypeScriptToLua/TypeScriptToLua",
6
6
  "homepage": "https://typescripttolua.github.io/",