Skip to content

Commit ebe2658

Browse files
committed
Fix Lua enumeration collector accessors
1 parent d065058 commit ebe2658

2 files changed

Lines changed: 24 additions & 4 deletions

File tree

de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/translation/lua/translation/LuaNatives.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ public class LuaNatives {
179179
f.getBody().add(LuaAst.LuaLiteral("local prev = __wurst_enumPlayer_override"));
180180
f.getBody().add(LuaAst.LuaLiteral("ForForce(whichForce, function()"));
181181
f.getBody().add(LuaAst.LuaLiteral(" count = count + 1"));
182-
f.getBody().add(LuaAst.LuaLiteral(" players[count] = __wurst_GetEnumPlayer()"));
182+
f.getBody().add(LuaAst.LuaLiteral(" players[count] = GetEnumPlayer()"));
183183
f.getBody().add(LuaAst.LuaLiteral("end)"));
184184
f.getBody().add(LuaAst.LuaLiteral("for i = 1, count do"));
185185
f.getBody().add(LuaAst.LuaLiteral(" __wurst_enumPlayer_override = players[i]"));
@@ -206,7 +206,7 @@ public class LuaNatives {
206206
f.getBody().add(LuaAst.LuaLiteral("local prev = __wurst_enumUnit_override"));
207207
f.getBody().add(LuaAst.LuaLiteral("ForGroup(whichGroup, function()"));
208208
f.getBody().add(LuaAst.LuaLiteral(" count = count + 1"));
209-
f.getBody().add(LuaAst.LuaLiteral(" units[count] = __wurst_GetEnumUnit()"));
209+
f.getBody().add(LuaAst.LuaLiteral(" units[count] = GetEnumUnit()"));
210210
f.getBody().add(LuaAst.LuaLiteral("end)"));
211211
f.getBody().add(LuaAst.LuaLiteral("for i = 1, count do"));
212212
f.getBody().add(LuaAst.LuaLiteral(" __wurst_enumUnit_override = units[i]"));
@@ -234,7 +234,7 @@ public class LuaNatives {
234234
f.getBody().add(LuaAst.LuaLiteral("local prev = __wurst_enumItem_override"));
235235
f.getBody().add(LuaAst.LuaLiteral("EnumItemsInRect(r, filter, function()"));
236236
f.getBody().add(LuaAst.LuaLiteral(" count = count + 1"));
237-
f.getBody().add(LuaAst.LuaLiteral(" items[count] = __wurst_GetEnumItem()"));
237+
f.getBody().add(LuaAst.LuaLiteral(" items[count] = GetEnumItem()"));
238238
f.getBody().add(LuaAst.LuaLiteral("end)"));
239239
f.getBody().add(LuaAst.LuaLiteral("for i = 1, count do"));
240240
f.getBody().add(LuaAst.LuaLiteral(" __wurst_enumItem_override = items[i]"));
@@ -262,7 +262,7 @@ public class LuaNatives {
262262
f.getBody().add(LuaAst.LuaLiteral("local prev = __wurst_enumDestructable_override"));
263263
f.getBody().add(LuaAst.LuaLiteral("EnumDestructablesInRect(r, filter, function()"));
264264
f.getBody().add(LuaAst.LuaLiteral(" count = count + 1"));
265-
f.getBody().add(LuaAst.LuaLiteral(" dests[count] = __wurst_GetEnumDestructable()"));
265+
f.getBody().add(LuaAst.LuaLiteral(" dests[count] = GetEnumDestructable()"));
266266
f.getBody().add(LuaAst.LuaLiteral("end)"));
267267
f.getBody().add(LuaAst.LuaLiteral("for i = 1, count do"));
268268
f.getBody().add(LuaAst.LuaLiteral(" __wurst_enumDestructable_override = dests[i]"));

de.peeeq.wurstscript/src/test/java/tests/wurstscript/tests/LuaTranslationTests.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2762,6 +2762,20 @@ public void luaFunctionRefWrapperForwardsVarargs() throws IOException {
27622762
assertFalse(compiled.contains("ForForce(f, function (...) \n\t\t\tlocal tempRes"));
27632763
}
27642764

2765+
@Test
2766+
public void forForceCollectorUsesNativeEnumAccessorInLua() throws IOException {
2767+
test().testLua(true).withStdLib().lines(
2768+
"package Test",
2769+
"init",
2770+
" let f = CreateForce()",
2771+
" ForForce(f, () -> skip)"
2772+
);
2773+
String compiled = Files.toString(new File("test-output/lua/LuaTranslationTests_forForceCollectorUsesNativeEnumAccessorInLua.lua"), Charsets.UTF_8);
2774+
assertTrue(compiled.contains("players[count] = GetEnumPlayer()"));
2775+
assertFalse(compiled.contains("players[count] = __wurst_GetEnumPlayer()"));
2776+
assertFalse(compiled.contains("function __wurst_GetEnumPlayer("));
2777+
}
2778+
27652779
@Test
27662780
public void luaFunctionRefsReuseOneAdapterAndPreserveSingleReturn() {
27672781
String compiled = compileLuaWithCUs(
@@ -2951,6 +2965,12 @@ public void groupItemDestructableCallbacksUseWurstContextHelpersInLua() throws I
29512965
assertContainsRegex(compiled, "\\bfunction\\s+__wurst_ForGroup\\s*\\(");
29522966
assertContainsRegex(compiled, "\\bfunction\\s+__wurst_EnumItemsInRect\\s*\\(");
29532967
assertContainsRegex(compiled, "\\bfunction\\s+__wurst_EnumDestructablesInRect\\s*\\(");
2968+
assertTrue(compiled.contains("units[count] = GetEnumUnit()"));
2969+
assertTrue(compiled.contains("items[count] = GetEnumItem()"));
2970+
assertTrue(compiled.contains("dests[count] = GetEnumDestructable()"));
2971+
assertFalse(compiled.contains("units[count] = __wurst_GetEnumUnit()"));
2972+
assertFalse(compiled.contains("items[count] = __wurst_GetEnumItem()"));
2973+
assertFalse(compiled.contains("dests[count] = __wurst_GetEnumDestructable()"));
29542974
}
29552975

29562976
@Test

0 commit comments

Comments
 (0)