mirror of
https://github.com/cincheo/jsweet.git
synced 2025-12-14 23:09:22 +00:00
remove trace + fix tests
This commit is contained in:
parent
0a3476c09d
commit
850104f6b2
@ -3209,6 +3209,7 @@ public class Java2TypeScriptTranslator extends AbstractTreePrinter {
|
||||
}
|
||||
|
||||
private String getOverloadMethodName(MethodSymbol method) {
|
||||
//return getAdapter().getOverloadMethodName(method);
|
||||
if (method.isConstructor()) {
|
||||
return "constructor";
|
||||
}
|
||||
|
||||
@ -435,19 +435,16 @@ public class OverloadScanner extends AbstractTreeScanner {
|
||||
for (JCCompilationUnit cu : cuList) {
|
||||
scan(cu);
|
||||
}
|
||||
System.out.println("\nPASS 1");
|
||||
context.dumpOverloads(System.out);
|
||||
pass++;
|
||||
for (JCCompilationUnit cu : cuList) {
|
||||
scan(cu);
|
||||
}
|
||||
// another pass to complete subclasses
|
||||
if (!context.options.isGenerateOverloadStubs()) {
|
||||
for (JCCompilationUnit cu : cuList) {
|
||||
scan(cu);
|
||||
}
|
||||
}
|
||||
System.out.println("\nPASS 2");
|
||||
context.dumpOverloads(System.out);
|
||||
for (Overload overload : context.getAllOverloads()) {
|
||||
overload.calculate(types, context.symtab);
|
||||
if (overload.methods.size() > 1 && !overload.isValid) {
|
||||
@ -456,8 +453,7 @@ public class OverloadScanner extends AbstractTreeScanner {
|
||||
}
|
||||
}
|
||||
}
|
||||
System.out.println("\nPASS 3");
|
||||
context.dumpOverloads(System.out);
|
||||
//context.dumpOverloads(System.out);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -28,6 +28,7 @@ import java.util.function.BiFunction;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.lang.model.element.Element;
|
||||
import javax.lang.model.element.ElementKind;
|
||||
import javax.lang.model.element.ExecutableElement;
|
||||
import javax.lang.model.element.Name;
|
||||
import javax.lang.model.element.PackageElement;
|
||||
@ -1269,4 +1270,35 @@ public class PrinterAdapter {
|
||||
return parentAdapter == null ? false : parentAdapter.substituteVariableDeclarationKeyword(variable);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the overload name for the given executable, which is assumed to be part of an overload.
|
||||
*
|
||||
* By default, an overload executable name is formed of the original executable name
|
||||
* ("constructor" for a constructor), concatenated to the arguments types where the '.' are
|
||||
* replaced with '_'. Argument types separators are '$'.
|
||||
*
|
||||
* For instance: m(String s, int i) would give: m$java_lang_Strin$int
|
||||
*
|
||||
* Programmers may override this method to change the default names (for simplification and
|
||||
* readability for instance).
|
||||
*
|
||||
* @param exectuable the executable to get the overload name
|
||||
* @return the overload name
|
||||
*/
|
||||
public String getOverloadMethodName(ExecutableElement executable) {
|
||||
if (executable.getKind() == ElementKind.CONSTRUCTOR) {
|
||||
return "constructor";
|
||||
}
|
||||
StringBuilder sb = new StringBuilder(executable.getSimpleName().toString());
|
||||
sb.append("$");
|
||||
for (VariableElement p : executable.getParameters()) {
|
||||
sb.append(types.erasure(p.asType()).toString().replace('.', '_').replace("[]", "_A"));
|
||||
sb.append("$");
|
||||
}
|
||||
if (!executable.getParameters().isEmpty()) {
|
||||
sb.deleteCharAt(sb.length() - 1);
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -8,45 +8,55 @@ public class OverLoadClassAndObjectNoStubs {
|
||||
public static void main(String[] args) {
|
||||
OverLoadClassAndObjectNoStubs overload = new OverLoadClassAndObjectNoStubs();
|
||||
|
||||
System.out.println(overload.m(AnInterface.class));
|
||||
System.out.println(overload.m(new AClass()));
|
||||
System.out.println((String)$apply(object(overload).$get("m$source_overload_AnInterface"), new AClass()));
|
||||
System.out.println((String)$apply(object(overload).$get("m$java_lang_Class"), AClass.class));
|
||||
System.out.println(overload.m(AnInterface11.class));
|
||||
System.out.println(overload.m(new AClass11()));
|
||||
System.out.println((String)$apply(object(overload).$get("m$source_overload_AnInterface11"), new AClass11()));
|
||||
System.out.println((String)$apply(object(overload).$get("m$java_lang_Class"), AClass11.class));
|
||||
// Overload with strings cannot work because AnInterface.class is transpiled as a string
|
||||
System.out.println((String)$apply(object(overload).$get("m$java_lang_Class"), AnInterface.class));
|
||||
|
||||
System.out.println(overload.m2(AClass.class));
|
||||
System.out.println(overload.m2(new AClass()));
|
||||
System.out.println((String)$apply(object(overload).$get("m2$source_overload_AClass"), new AClass()));
|
||||
System.out.println((String)$apply(object(overload).$get("m2$java_lang_Class"), AClass.class));
|
||||
System.out.println(overload.m2(AClass11.class));
|
||||
System.out.println(overload.m2(new AClass11()));
|
||||
System.out.println((String)$apply(object(overload).$get("m2$source_overload_AClass11"), new AClass11()));
|
||||
System.out.println((String)$apply(object(overload).$get("m2$java_lang_Class"), AClass11.class));
|
||||
|
||||
assert overload.m(AnInterface.class) == "2:source.overload.AnInterface";
|
||||
assert overload.m(new AClass()) == "1:object";
|
||||
assert $apply(object(overload).$get("m$source_overload_AnInterface"), new AClass()) == "1:object";
|
||||
assert $apply(object(overload).$get("m$java_lang_Class"), AClass.class) == "2:source.overload.AClass";
|
||||
assert $apply(object(overload).$get("m$java_lang_Class"), AnInterface.class) == "2:source.overload.AnInterface";
|
||||
assert overload.m(AnInterface11.class) == "2:source.overload.AnInterface11";
|
||||
assert overload.m(new AClass11()) == "1:object";
|
||||
assert $apply(object(overload).$get("m$source_overload_AnInterface11"), new AClass11()) == "1:object";
|
||||
assert $apply(object(overload).$get("m$java_lang_Class"), AClass11.class) == "2:source.overload.AClass11";
|
||||
assert $apply(object(overload).$get("m$java_lang_Class"), AnInterface11.class) == "2:source.overload.AnInterface11";
|
||||
|
||||
assert overload.m2(AClass.class) == "2:source.overload.AClass";
|
||||
assert overload.m2(new AClass()) == "1:object";
|
||||
assert $apply(object(overload).$get("m2$source_overload_AClass"), new AClass()) == "1:object";
|
||||
assert $apply(object(overload).$get("m2$java_lang_Class"), AClass.class) == "2:source.overload.AClass";
|
||||
assert overload.m2(AClass11.class) == "2:source.overload.AClass11";
|
||||
assert overload.m2(new AClass11()) == "1:object";
|
||||
assert $apply(object(overload).$get("m2$source_overload_AClass11"), new AClass11()) == "1:object";
|
||||
assert $apply(object(overload).$get("m2$java_lang_Class"), AClass11.class) == "2:source.overload.AClass11";
|
||||
|
||||
}
|
||||
|
||||
String m(AnInterface o) {
|
||||
String m(AnInterface11 o) {
|
||||
return "1:" + o.getName();
|
||||
}
|
||||
|
||||
String m(Class<AnInterface> clazz) {
|
||||
String m(Class<AnInterface11> clazz) {
|
||||
return "2:" + clazz.getName();
|
||||
}
|
||||
|
||||
String m2(AClass o) {
|
||||
String m2(AClass11 o) {
|
||||
return "1:" + o.getName();
|
||||
}
|
||||
|
||||
String m2(Class<AClass> clazz) {
|
||||
String m2(Class<AClass11> clazz) {
|
||||
return "2:" + clazz.getName();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
interface AnInterface11 {
|
||||
String getName();
|
||||
}
|
||||
|
||||
class AClass11 implements AnInterface11 {
|
||||
public String getName() {
|
||||
return "object";
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,30 +6,30 @@ public class OverLoadVaragsNoStubs {
|
||||
|
||||
public static void main(String[] args) {
|
||||
OverLoadVaragsNoStubs ov = new OverLoadVaragsNoStubs();
|
||||
System.out.println(ov.m(new AClass2()));
|
||||
System.out.println(ov.m(new AClass2(), true, "a", "b", "c"));
|
||||
System.out.println((String)$insert("ov.m$source_overload_AnInterface2(new AClass2())"));
|
||||
System.out.println((String)$insert("ov.m$source_overload_AnInterface2$boolean$java_lang_String_A(new AClass2(), true, 'a', 'b', 'c')"));
|
||||
assert ov.m(new AClass2()) == "1:object";
|
||||
assert ov.m(new AClass2(), true, "a", "b", "c") == "objecta,b,c/3";
|
||||
assert $insert("ov.m$source_overload_AnInterface2(new AClass2())") == "1:object";
|
||||
assert $insert("ov.m$source_overload_AnInterface2$boolean$java_lang_String_A(new AClass2(), true, 'a', 'b', 'c')") == "objecta,b,c/3";
|
||||
System.out.println(ov.m(new AClass22()));
|
||||
System.out.println(ov.m(new AClass22(), true, "a", "b", "c"));
|
||||
System.out.println((String)$insert("ov.m$source_overload_AnInterface22(new AClass22())"));
|
||||
System.out.println((String)$insert("ov.m$source_overload_AnInterface22$boolean$java_lang_String_A(new AClass22(), true, 'a', 'b', 'c')"));
|
||||
assert ov.m(new AClass22()) == "1:object";
|
||||
assert ov.m(new AClass22(), true, "a", "b", "c") == "objecta,b,c/3";
|
||||
assert $insert("ov.m$source_overload_AnInterface22(new AClass22())") == "1:object";
|
||||
assert $insert("ov.m$source_overload_AnInterface22$boolean$java_lang_String_A(new AClass22(), true, 'a', 'b', 'c')") == "objecta,b,c/3";
|
||||
// passing an array does not work
|
||||
// TODO: when invoking org method, test if passed expression type is an array and use call
|
||||
//assert $insert("ov.m(new AClass2(), true, ['a', 'b', 'c'])") == "objecta,b,c/3";
|
||||
assert ov.mref(new AClass2(), "a", "b", "c") == "objecta,b,c/3";
|
||||
assert ov.mref(new AClass2(), new String[] {"a", "b", "c"}) == "objecta,b,c/3";
|
||||
//assert $insert("ov.m(new AClass22(), true, ['a', 'b', 'c'])") == "objecta,b,c/3";
|
||||
assert ov.mref(new AClass22(), "a", "b", "c") == "objecta,b,c/3";
|
||||
assert ov.mref(new AClass22(), new String[] {"a", "b", "c"}) == "objecta,b,c/3";
|
||||
}
|
||||
|
||||
String m(AnInterface2 dto, boolean b, String... options) {
|
||||
String m(AnInterface22 dto, boolean b, String... options) {
|
||||
return dto.getName() + varM(options);
|
||||
}
|
||||
|
||||
String m(AnInterface2 dto) {
|
||||
String m(AnInterface22 dto) {
|
||||
return "1:" + dto.getName();
|
||||
}
|
||||
|
||||
String mref(AnInterface2 dto, String... options) {
|
||||
String mref(AnInterface22 dto, String... options) {
|
||||
return dto.getName() + varM(options);
|
||||
}
|
||||
|
||||
@ -38,3 +38,13 @@ public class OverLoadVaragsNoStubs {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
interface AnInterface22 {
|
||||
String getName();
|
||||
}
|
||||
|
||||
class AClass22 implements AnInterface22 {
|
||||
public String getName() {
|
||||
return "object";
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user