From b3602f3fc7d636de3b2d99bf8f5bab04d0e350e2 Mon Sep 17 00:00:00 2001 From: Ryan Young Date: Fri, 25 Nov 2022 02:43:24 +0000 Subject: [PATCH 1/2] refactor(5.0): emulate modulo with native math.mod() --- src/lualib/5.0/Modulo50.ts | 3 +++ src/lualib/Modulo50.ts | 5 ----- src/lualib/universal/Modulo50.ts | 5 +++++ 3 files changed, 8 insertions(+), 5 deletions(-) create mode 100644 src/lualib/5.0/Modulo50.ts delete mode 100644 src/lualib/Modulo50.ts create mode 100644 src/lualib/universal/Modulo50.ts diff --git a/src/lualib/5.0/Modulo50.ts b/src/lualib/5.0/Modulo50.ts new file mode 100644 index 000000000..507fe682d --- /dev/null +++ b/src/lualib/5.0/Modulo50.ts @@ -0,0 +1,3 @@ +/** @noSelfInFile */ + +export const __TS__Modulo50 = math.mod; diff --git a/src/lualib/Modulo50.ts b/src/lualib/Modulo50.ts deleted file mode 100644 index 4b9729436..000000000 --- a/src/lualib/Modulo50.ts +++ /dev/null @@ -1,5 +0,0 @@ -/** @noSelfInFile */ - -export function __TS__Modulo50(a: number, b: number): number { - return a - Math.floor(a / b) * b; -} diff --git a/src/lualib/universal/Modulo50.ts b/src/lualib/universal/Modulo50.ts new file mode 100644 index 000000000..ee5a12b04 --- /dev/null +++ b/src/lualib/universal/Modulo50.ts @@ -0,0 +1,5 @@ +/** @noSelfInFile */ + +export function __TS__Modulo50(_a: number, _b: number) { + throw "Using a 5.0 shim for a non-5.0 target, what?"; +} From 9d1094dcec9a7ad5a6a079dce64bc301afcc0cc1 Mon Sep 17 00:00:00 2001 From: Ryan Young Date: Fri, 25 Nov 2022 16:16:56 +0000 Subject: [PATCH 2/2] refactor(5.0): remove the modulo lualib feature altogether --- src/LuaLib.ts | 1 - src/lualib/5.0/Modulo50.ts | 3 --- src/lualib/universal/Modulo50.ts | 5 ----- src/transformation/visitors/binary-expression/index.ts | 3 ++- 4 files changed, 2 insertions(+), 10 deletions(-) delete mode 100644 src/lualib/5.0/Modulo50.ts delete mode 100644 src/lualib/universal/Modulo50.ts diff --git a/src/LuaLib.ts b/src/LuaLib.ts index 2ab5d33ba..4e4c8008a 100644 --- a/src/LuaLib.ts +++ b/src/LuaLib.ts @@ -52,7 +52,6 @@ export enum LuaLibFeature { MathAtan2 = "MathAtan2", MathModf = "MathModf", MathSign = "MathSign", - Modulo50 = "Modulo50", New = "New", Number = "Number", NumberIsFinite = "NumberIsFinite", diff --git a/src/lualib/5.0/Modulo50.ts b/src/lualib/5.0/Modulo50.ts deleted file mode 100644 index 507fe682d..000000000 --- a/src/lualib/5.0/Modulo50.ts +++ /dev/null @@ -1,3 +0,0 @@ -/** @noSelfInFile */ - -export const __TS__Modulo50 = math.mod; diff --git a/src/lualib/universal/Modulo50.ts b/src/lualib/universal/Modulo50.ts deleted file mode 100644 index ee5a12b04..000000000 --- a/src/lualib/universal/Modulo50.ts +++ /dev/null @@ -1,5 +0,0 @@ -/** @noSelfInFile */ - -export function __TS__Modulo50(_a: number, _b: number) { - throw "Using a 5.0 shim for a non-5.0 target, what?"; -} diff --git a/src/transformation/visitors/binary-expression/index.ts b/src/transformation/visitors/binary-expression/index.ts index 3b5521490..e02615be7 100644 --- a/src/transformation/visitors/binary-expression/index.ts +++ b/src/transformation/visitors/binary-expression/index.ts @@ -70,7 +70,8 @@ function transformBinaryOperationWithNoPrecedingStatements( } if (operator === ts.SyntaxKind.PercentToken && context.luaTarget === LuaTarget.Lua50) { - return transformLuaLibFunction(context, LuaLibFeature.Modulo50, node, left, right); + const mathMod = lua.createTableIndexExpression(lua.createIdentifier("math"), lua.createStringLiteral("mod")); + return lua.createCallExpression(mathMod, [left, right], node); } let luaOperator = simpleOperatorsToLua[operator];