fix #342 (import problem when using modules) + test

This commit is contained in:
Renaud Pawlak 2017-08-20 09:53:36 +02:00
parent 5c6562d93f
commit dae3a9335c
7 changed files with 70 additions and 0 deletions

View File

@ -673,8 +673,27 @@ public class Java2TypeScriptTranslator extends AbstractTreePrinter {
}
}
Stack<Overload> overloadStack = new Stack<>();
@Override
public void scan(JCTree t) {
// grab the types in overloaded method because they may use
// other types necessary for the instanceof implementation
// (see #342)
if (t instanceof JCMethodDecl) {
JCMethodDecl method = (JCMethodDecl) t;
if (context.isInvalidOverload(method.sym)) {
Overload overload = context.getOverload((ClassSymbol) method.sym.getEnclosingElement(),
method.sym);
if (!overloadStack.contains(overload)) {
overloadStack.push(overload);
for (JCTree overloadedMethod : overload.methods) {
this.scan(overloadedMethod);
}
overloadStack.pop();
}
}
}
if (t != null && t.type != null && t.type.tsym instanceof ClassSymbol) {
if (!(t instanceof JCTypeApply)) {
checkType(t.type.tsym);

View File

@ -50,6 +50,11 @@ import source.overload.WrongOverloadWithSpecialParameters;
import source.overload.WrongOverloads;
import source.overload.WrongOverloadsWithDefaultMethods;
import source.overload.WrongOverloadsWithNonCoreMethod;
import source.overload.visitor.A1;
import source.overload.visitor.A2;
import source.overload.visitor.A3;
import source.overload.visitor.F;
import source.overload.visitor.F1;
public class OverloadTests extends AbstractTest {
@ -263,4 +268,12 @@ public class OverloadTests extends AbstractTest {
}, getSourceFile(AbstractMethodOverloadInAnonymousClass.class));
}
@Test
public void testVisitor() {
transpile((logHandler) -> {
logHandler.assertNoProblems();
}, getSourceFile(A1.class), getSourceFile(A2.class), getSourceFile(A3.class), getSourceFile(F1.class), getSourceFile(F.class));
}
}

View File

@ -0,0 +1,5 @@
package source.overload.visitor;
public class A1 {
}

View File

@ -0,0 +1,5 @@
package source.overload.visitor;
public class A2 {
}

View File

@ -0,0 +1,5 @@
package source.overload.visitor;
public class A3 {
}

View File

@ -0,0 +1,9 @@
package source.overload.visitor;
public class F extends F1 {
@Override
public void visit(A1 param) {
}
}

View File

@ -0,0 +1,14 @@
package source.overload.visitor;
public class F1 {
public void visit(A1 param) {
}
public void visit(A2 param) {
}
public void visit(A3 param) {
}
}