diff --git a/transpiler/pom.xml b/transpiler/pom.xml index 0a4a5df7..d0e817cd 100644 --- a/transpiler/pom.xml +++ b/transpiler/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jsweet jsweet-transpiler - 2.0.0-rc1 + 2.0.0-SNAPSHOT JSweet transpiler A Java to TypeScript/JavaScript Open Transpiler diff --git a/transpiler/src/test/java/org/jsweet/test/transpiler/EnumTests.java b/transpiler/src/test/java/org/jsweet/test/transpiler/EnumTests.java index 92093df6..1b38a6d3 100644 --- a/transpiler/src/test/java/org/jsweet/test/transpiler/EnumTests.java +++ b/transpiler/src/test/java/org/jsweet/test/transpiler/EnumTests.java @@ -27,15 +27,17 @@ import org.jsweet.transpiler.extension.StringEnumAdapter; import org.junit.Assert; import org.junit.Test; -import source.enums.EnumWithStatics; import source.enums.ComplexEnumWithAbstractMethods; +import source.enums.ComplexEnums; import source.enums.ComplexEnumsWithInterface; import source.enums.ComplexInnerEnums; -import source.enums.ComplexEnums; import source.enums.EnumInSamePackage; +import source.enums.EnumWithStatics; import source.enums.Enums; import source.enums.ErasedEnum; +import source.enums.MyComplexEnum2; import source.enums.StringEnums; +import source.enums.other.ComplexEnumsAccess; import source.enums.other.EnumInOtherPackage; public class EnumTests extends AbstractTest { @@ -84,6 +86,15 @@ public class EnumTests extends AbstractTest { }, getSourceFile(ComplexEnums.class)); } + @Test + public void testComplexEnumsAccess() { + eval((logHandler, r) -> { + logHandler.assertNoProblems(); + Assert.assertEquals(">2,--2--,ratio_2_1_5,true,true,true,true", r.get("trace2")); + //Assert.assertEquals(">static,2,--2--,ratio_2_1_5,true,true,true,true,2,2", r.get("trace2")); + }, getSourceFile(MyComplexEnum2.class), getSourceFile(ComplexEnumsAccess.class)); + } + @Test public void testComplexInnerEnums() { eval((logHandler, r) -> { diff --git a/transpiler/src/test/java/source/enums/ComplexEnums.java b/transpiler/src/test/java/source/enums/ComplexEnums.java index a2e6eaf9..d481c897 100644 --- a/transpiler/src/test/java/source/enums/ComplexEnums.java +++ b/transpiler/src/test/java/source/enums/ComplexEnums.java @@ -26,11 +26,11 @@ public class ComplexEnums { $export("trace", ">" + trace.join(",")); } - static class A { - static int i = 2; + public static class A { + public static int i = 2; } - static enum InnerEnum { + public static enum InnerEnum { E1(0x0), diff --git a/transpiler/src/test/java/source/enums/MyComplexEnum2.java b/transpiler/src/test/java/source/enums/MyComplexEnum2.java new file mode 100644 index 00000000..9d52a199 --- /dev/null +++ b/transpiler/src/test/java/source/enums/MyComplexEnum2.java @@ -0,0 +1,41 @@ +package source.enums; + +import source.enums.other.ComplexEnumsAccess; + +public enum MyComplexEnum2 { + FREE_RATIO(null), VIEW_3D_RATIO(null), RATIO_4_3(4f / 3), RATIO_3_2(1.5f), RATIO_16_9(16f / 9), RATIO_2_1( + 2f / 1f), SQUARE_RATIO(1f); + + private final Float value; + + public String str; + + public String otherName; + + private MyComplexEnum2(Float value) { + this.value = value; + this.str = "--" + value.intValue() + "--"; + this.otherName = this.name().toLowerCase() + "_" + ordinal(); + aNonStaticMethod(); + this.aNonStaticMethod(); + aStaticMethod2(); + } + + public Float getValue() { + aNonStaticMethod(); + this.aNonStaticMethod(); + aStaticMethod2(); + return value; + } + + public static void aStaticMethod() { + ComplexEnumsAccess.trace2.push("static"); + } + + public static void aStaticMethod2() { + } + + public void aNonStaticMethod() { + } + +} diff --git a/transpiler/src/test/java/source/enums/other/ComplexEnumsAccess.java b/transpiler/src/test/java/source/enums/other/ComplexEnumsAccess.java new file mode 100644 index 00000000..219977db --- /dev/null +++ b/transpiler/src/test/java/source/enums/other/ComplexEnumsAccess.java @@ -0,0 +1,25 @@ +package source.enums.other; + +import static jsweet.util.Lang.$export; + +import def.js.Array; +import source.enums.MyComplexEnum2; + +public class ComplexEnumsAccess { + public static Array trace2 = new Array(); + + public static void main(String[] args) { + // TODO: this does not work with modules + //MyComplexEnum2.aStaticMethod(); + trace2.push("" + MyComplexEnum2.RATIO_2_1.getValue()); + trace2.push("" + MyComplexEnum2.RATIO_2_1.str); + trace2.push("" + MyComplexEnum2.RATIO_2_1.otherName); + trace2.push("" + (MyComplexEnum2.RATIO_16_9 == MyComplexEnum2.RATIO_16_9)); + trace2.push("" + (MyComplexEnum2.RATIO_16_9.name() == MyComplexEnum2.RATIO_16_9.name())); + trace2.push("" + (MyComplexEnum2.RATIO_16_9.ordinal() == MyComplexEnum2.RATIO_16_9.ordinal())); + trace2.push("" + (MyComplexEnum2.RATIO_16_9 != (MyComplexEnum2) MyComplexEnum2.RATIO_3_2)); + + $export("trace2", ">" + trace2.join(",")); + } +} +