This commit is contained in:
Renaud Pawlak 2017-09-21 09:14:39 +02:00
parent dc80068d51
commit 753ed3baa7
4 changed files with 47 additions and 5 deletions

View File

@ -1056,13 +1056,15 @@ public class RemoveJavaDependenciesAdapter extends Java2TypeScriptAdapter {
case "remove":
case "removeElement":
printMacroName(targetMethodName);
if (Util.isNumber(invocation.getArgument(0).getType())) {
if (Util.isNumber(invocation.getArgument(0).getType()) && types()
.isSubtype(invocation.getMethod().getEnclosingElement().asType(), util().getType(List.class))) {
print(invocation.getTargetExpression(), delegate).print(".splice(")
.printArgList(invocation.getArguments()).print(", 1)");
} else {
print("(a => a.splice(a.indexOf(").print(invocation.getArgument(0)).print(")")
.print(invocation.getArgumentCount() == 1 ? "" : ", ")
.printArgList(invocation.getArgumentTail()).print(", 1))(");
print("(a => { let index = a.indexOf(").print(invocation.getArgument(0))
.print("); if(index>=0) { a.splice(index").print(invocation.getArgumentCount() == 1 ? "" : ", ")
.printArgList(invocation.getArgumentTail())
.print(", 1); return true; } else { return false; }})(");
print(invocation.getTargetExpression(), delegate).print(")");
}
return true;
@ -1109,7 +1111,8 @@ public class RemoveJavaDependenciesAdapter extends Java2TypeScriptAdapter {
return true;
case "size":
printMacroName(targetMethodName);
print(invocation.getTargetExpression(), delegate).print(".length");
print("(<number>");
print(invocation.getTargetExpression(), delegate).print(".length)");
return true;
case "get":
case "elementAt":

View File

@ -93,6 +93,8 @@ public class UtilSupport implements Util {
return context.symtab.noSuchFieldErrorType;
case "java.lang.Throwable":
return context.symtab.throwableType;
case "java.util.List":
return context.symtab.listType;
}
return null;
}

View File

@ -73,6 +73,24 @@ public class Maps {
trace.push("" + e.getValue());
}
Map<String, Integer> m3 = new HashMap<>();
m3.put("a", 1);
assert m3.size() == 1;
m3.remove("a");
assert m3.size() == 0;
m3.put("b", 2);
m3.remove("a");
assert m3.size() == 1;
Map<Integer, Integer> m4 = new HashMap<>();
m4.put(1, 1);
assert m4.size() == 1;
m4.remove(1);
assert m4.size() == 0;
m4.put(2, 2);
m4.remove(1);
assert m4.size() == 1;
$export("trace", trace.join(","));
}

View File

@ -21,6 +21,25 @@ public class Sets {
System.out.println(map.get(s));
// TODO: make this work (see #196)
// assert "bye".equals(map.get(s));
Set<String> s3 = new HashSet<>();
s3.add("1");
assert s3.size() == 1;
assert s3.remove("1");
assert s3.size() == 0;
s3.add("2");
assert !s3.remove("1");
assert s3.size() == 1;
Set<Integer> s4 = new HashSet<>();
s4.add(1);
assert s4.size() == 1;
assert s4.remove(1);
assert s4.size() == 0;
s4.add(2);
assert !s4.remove(1);
assert s4.size() == 1;
}
}