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