mirror of
https://github.com/cincheo/jsweet.git
synced 2025-12-15 15:29:22 +00:00
fix #342 (import problem when using modules) + test
This commit is contained in:
parent
5c6562d93f
commit
dae3a9335c
@ -673,8 +673,27 @@ public class Java2TypeScriptTranslator extends AbstractTreePrinter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Stack<Overload> overloadStack = new Stack<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void scan(JCTree t) {
|
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 != null && t.type != null && t.type.tsym instanceof ClassSymbol) {
|
||||||
if (!(t instanceof JCTypeApply)) {
|
if (!(t instanceof JCTypeApply)) {
|
||||||
checkType(t.type.tsym);
|
checkType(t.type.tsym);
|
||||||
|
|||||||
@ -50,6 +50,11 @@ import source.overload.WrongOverloadWithSpecialParameters;
|
|||||||
import source.overload.WrongOverloads;
|
import source.overload.WrongOverloads;
|
||||||
import source.overload.WrongOverloadsWithDefaultMethods;
|
import source.overload.WrongOverloadsWithDefaultMethods;
|
||||||
import source.overload.WrongOverloadsWithNonCoreMethod;
|
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 {
|
public class OverloadTests extends AbstractTest {
|
||||||
|
|
||||||
@ -263,4 +268,12 @@ public class OverloadTests extends AbstractTest {
|
|||||||
}, getSourceFile(AbstractMethodOverloadInAnonymousClass.class));
|
}, 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));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
5
transpiler/src/test/java/source/overload/visitor/A1.java
Normal file
5
transpiler/src/test/java/source/overload/visitor/A1.java
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
package source.overload.visitor;
|
||||||
|
|
||||||
|
public class A1 {
|
||||||
|
|
||||||
|
}
|
||||||
5
transpiler/src/test/java/source/overload/visitor/A2.java
Normal file
5
transpiler/src/test/java/source/overload/visitor/A2.java
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
package source.overload.visitor;
|
||||||
|
|
||||||
|
public class A2 {
|
||||||
|
|
||||||
|
}
|
||||||
5
transpiler/src/test/java/source/overload/visitor/A3.java
Normal file
5
transpiler/src/test/java/source/overload/visitor/A3.java
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
package source.overload.visitor;
|
||||||
|
|
||||||
|
public class A3 {
|
||||||
|
|
||||||
|
}
|
||||||
9
transpiler/src/test/java/source/overload/visitor/F.java
Normal file
9
transpiler/src/test/java/source/overload/visitor/F.java
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
package source.overload.visitor;
|
||||||
|
|
||||||
|
public class F extends F1 {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visit(A1 param) {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
14
transpiler/src/test/java/source/overload/visitor/F1.java
Normal file
14
transpiler/src/test/java/source/overload/visitor/F1.java
Normal 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) {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user