diff --git a/transpiler/src/main/java/org/jsweet/transpiler/Java2TypeScriptTranslator.java b/transpiler/src/main/java/org/jsweet/transpiler/Java2TypeScriptTranslator.java index 3ee8cd41..2c7d65e4 100644 --- a/transpiler/src/main/java/org/jsweet/transpiler/Java2TypeScriptTranslator.java +++ b/transpiler/src/main/java/org/jsweet/transpiler/Java2TypeScriptTranslator.java @@ -2730,7 +2730,7 @@ public class Java2TypeScriptTranslator extends AbstractTreePrinter { } } else { if (varDecl.init != null && !isDefinitionScope) { - if (!(parent instanceof JCClassDecl && getScope().innerClassNotStatic + if (!(parent instanceof JCClassDecl && getScope().innerClassNotStatic && !varDecl.sym.isStatic() && !Util.isConstantOrNullField(varDecl))) { if (!globals && parent instanceof JCClassDecl && getScope().interfaceScope) { report(varDecl, varDecl.name, JSweetProblem.INVALID_FIELD_INITIALIZER_IN_INTERFACE, diff --git a/transpiler/src/test/java/org/jsweet/test/transpiler/StructuralTests.java b/transpiler/src/test/java/org/jsweet/test/transpiler/StructuralTests.java index fa24838c..6b664527 100644 --- a/transpiler/src/test/java/org/jsweet/test/transpiler/StructuralTests.java +++ b/transpiler/src/test/java/org/jsweet/test/transpiler/StructuralTests.java @@ -113,6 +113,8 @@ public class StructuralTests extends AbstractTest { assertEquals("test1", r.get("value1")); assertEquals("test2", r.get("value2")); assertEquals("test3", r.get("value3")); + assertEquals("test4", r.get("value4")); + assertEquals("abc", r.get("value5")); }, getSourceFile(InnerClass.class)); } @@ -126,7 +128,7 @@ public class StructuralTests extends AbstractTest { public void testInnerClassNotStatic() { eval((logHandler, r) -> { logHandler.assertNoProblems(); - assertEquals("22abc,22a,22ABC,22a,22b,22c,22ABC,test22a,staticMethod", r.get("trace")); + assertEquals("22abc,22a,22ABC,22a,22b,22c,22ABC,test22a,staticMethod,1", r.get("trace")); }, getSourceFile(InnerClassNotStatic.class)); } diff --git a/transpiler/src/test/java/source/structural/InnerClass.java b/transpiler/src/test/java/source/structural/InnerClass.java index b2dbf923..c64929d7 100644 --- a/transpiler/src/test/java/source/structural/InnerClass.java +++ b/transpiler/src/test/java/source/structural/InnerClass.java @@ -25,6 +25,7 @@ public class InnerClass { new InnerClass().m(); InnerClass1.m2(); String s = InnerClass1.S; + $export("value5", s); } public void m() { @@ -41,6 +42,7 @@ public class InnerClass { private final static class InnerClass1 { private static String S = "abc"; + static final int I = 2; private void m1() { $export("value1", "test" + i); diff --git a/transpiler/src/test/java/source/structural/InnerClassNotStatic.java b/transpiler/src/test/java/source/structural/InnerClassNotStatic.java index 48619219..0f903089 100644 --- a/transpiler/src/test/java/source/structural/InnerClassNotStatic.java +++ b/transpiler/src/test/java/source/structural/InnerClassNotStatic.java @@ -26,6 +26,11 @@ public class InnerClassNotStatic { public static void main(String[] args) { new InnerClassNotStatic().m(); + int i = InnerClassNotStatic.ActionType.CREATE; + i = InnerClassNotStatic.ActionType.DELETE; + i = InnerClassNotStatic.ActionType.UPDATE; + trace.push("" + i); + $export("trace", trace.join(",")); } int i = 2; @@ -33,7 +38,7 @@ public class InnerClassNotStatic { int getI() { return i; } - + private static void staticMethod() { trace.push("staticMethod"); } @@ -43,11 +48,13 @@ public class InnerClassNotStatic { new InnerClass1("ABC").m1(); new InnerClass2().m(); new InnerClass1("ABC").m2(); - $export("trace", trace.join(",")); } public class InnerClass1 { + public static final int I = 2; + int j = i + 1; + public InnerClass1(String s) { trace.push("" + i + getI() + s); } @@ -67,7 +74,7 @@ public class InnerClassNotStatic { trace.push("" + i + getI() + "b"); new InnerOfInnerClass().m(); } - + public final class InnerOfInnerClass { public void m() { trace.push("" + i + getI() + "c"); @@ -78,6 +85,11 @@ public class InnerClassNotStatic { public interface I { } + private class ActionType { + private static final int CREATE = 0; + private static final int UPDATE = 1; + private static final int DELETE = 2; + } } class Sub extends InnerClassNotStatic {