From 2ae275e2713982435ad1eae16e5999ef68a7e9d4 Mon Sep 17 00:00:00 2001 From: Peter Zeller Date: Wed, 16 May 2018 23:24:24 +0200 Subject: [PATCH] initialize module-use-instances before class-vars see #656 --- .../imtranslation/ClassTranslator.java | 6 +++--- .../tests/wurstscript/tests/ModuleTests.java | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/translation/imtranslation/ClassTranslator.java b/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/translation/imtranslation/ClassTranslator.java index 5cddd4520..cb18477a1 100644 --- a/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/translation/imtranslation/ClassTranslator.java +++ b/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/translation/imtranslation/ClassTranslator.java @@ -246,12 +246,12 @@ private void translateModuleConstructors(ModuleInstanciation mi) { private void translateVars(ClassOrModuleInstanciation c) { - for (GlobalVarDef v : c.getVars()) { - translateVar(v); - } for (ModuleInstanciation mi : c.getModuleInstanciations()) { translateVars(mi); } + for (GlobalVarDef v : c.getVars()) { + translateVar(v); + } } private void translateVar(GlobalVarDef s) { diff --git a/de.peeeq.wurstscript/src/test/java/tests/wurstscript/tests/ModuleTests.java b/de.peeeq.wurstscript/src/test/java/tests/wurstscript/tests/ModuleTests.java index 99aa4fe86..0a6145faa 100644 --- a/de.peeeq.wurstscript/src/test/java/tests/wurstscript/tests/ModuleTests.java +++ b/de.peeeq.wurstscript/src/test/java/tests/wurstscript/tests/ModuleTests.java @@ -536,4 +536,23 @@ public void stupidTest() { // see #656 "endpackage" ); } + + @Test + public void testModuleMemberInit2() { // see #656 + testAssertOkLinesWithStdLib(true, + "package Test", + "import LinkedListModule", + "native testSuccess()", + "public class TestClass", + " use LinkedListModule", + " static TestClass a = new TestClass", + " construct()", + " print(\"constructed\")", + "init", + " print(\"size test2:\" + TestClass.size.toString())", + " if TestClass.size == 1", + " testSuccess()", + "endpackage" + ); + } }