diff --git a/transpiler/src/main/java/org/jsweet/transpiler/extension/RemoveJavaDependenciesAdapter.java b/transpiler/src/main/java/org/jsweet/transpiler/extension/RemoveJavaDependenciesAdapter.java index 880969b5..0ab28d90 100644 --- a/transpiler/src/main/java/org/jsweet/transpiler/extension/RemoveJavaDependenciesAdapter.java +++ b/transpiler/src/main/java/org/jsweet/transpiler/extension/RemoveJavaDependenciesAdapter.java @@ -1153,9 +1153,16 @@ public class RemoveJavaDependenciesAdapter extends Java2TypeScriptAdapter { print(invocation.getTargetExpression(), delegate).print(")"); return true; case "remove": - case "removeElement": + case "removeFirst": // in Deque + case "removeElement": // in Vector: functionally equivalent to List.remove(int idx) 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().erasure(util().getType(List.class)))) { print(invocation.getTargetExpression(), delegate).print(".splice(") diff --git a/transpiler/src/test/java/source/nativestructures/Collections.java b/transpiler/src/test/java/source/nativestructures/Collections.java index 11ecc4e7..c1a9ec9d 100644 --- a/transpiler/src/test/java/source/nativestructures/Collections.java +++ b/transpiler/src/test/java/source/nativestructures/Collections.java @@ -265,6 +265,10 @@ public class Collections implements Cloneable, Serializable { dq.addLast("a"); dq.addLast("b"); dq.addFirst("c"); + dq.remove(); + dq.addFirst("c"); + dq.removeFirst(); + dq.addFirst("c"); trace.push("" + dq.isEmpty());