fix #240 + update tests

This commit is contained in:
Renaud Pawlak 2017-04-11 07:40:33 +02:00
parent 821ad80c26
commit 46e5dcf9cb
4 changed files with 21 additions and 5 deletions

View File

@ -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,

View File

@ -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));
}

View File

@ -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);

View File

@ -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 {