Merge pull request #518 from blagae/master

Support Deque:remove() and removeFirst()
This commit is contained in:
Renaud Pawlak 2019-02-26 19:47:11 +01:00 committed by GitHub
commit 2e8800dedb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 2 deletions

View File

@ -1153,9 +1153,16 @@ public class RemoveJavaDependenciesAdapter extends Java2TypeScriptAdapter {
print(invocation.getTargetExpression(), delegate).print(")"); print(invocation.getTargetExpression(), delegate).print(")");
return true; return true;
case "remove": case "remove":
case "removeElement": case "removeFirst": // in Deque
case "removeElement": // in Vector: functionally equivalent to List.remove(int idx)
printMacroName(targetMethodName); printMacroName(targetMethodName);
if (Util.isNumber(invocation.getArgument(0).getType()) /* in Queue: interface contains a no-arg method remove()
* which is functionally identical to Deque.removeFirst()
*/
if (invocation.getArgumentCount() == 0) {
print(invocation.getTargetExpression(), delegate)
.print(".splice(0, 1)[0]");
} else if (Util.isNumber(invocation.getArgument(0).getType())
&& types().isSubtype(types().erasure(invocation.getTargetExpression().getType()), && types().isSubtype(types().erasure(invocation.getTargetExpression().getType()),
types().erasure(util().getType(List.class)))) { types().erasure(util().getType(List.class)))) {
print(invocation.getTargetExpression(), delegate).print(".splice(") print(invocation.getTargetExpression(), delegate).print(".splice(")

View File

@ -265,6 +265,10 @@ public class Collections implements Cloneable, Serializable {
dq.addLast("a"); dq.addLast("a");
dq.addLast("b"); dq.addLast("b");
dq.addFirst("c"); dq.addFirst("c");
dq.remove();
dq.addFirst("c");
dq.removeFirst();
dq.addFirst("c");
trace.push("" + dq.isEmpty()); trace.push("" + dq.isEmpty());