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 a0f48bb6..b42073cb 100644 --- a/transpiler/src/main/java/org/jsweet/transpiler/extension/RemoveJavaDependenciesAdapter.java +++ b/transpiler/src/main/java/org/jsweet/transpiler/extension/RemoveJavaDependenciesAdapter.java @@ -595,6 +595,12 @@ public class RemoveJavaDependenciesAdapter extends Java2TypeScriptAdapter { .print(invocation.getTargetExpression()).print(")"); } return true; + case "setCharAt": + printMacroName(targetMethodName); + print("((sb, index, c) => sb.str = sb.str.substr(0, index) + c + sb.str.substr(index + 1))(") + .print(invocation.getTargetExpression()).print(", ").printArgList(invocation.getArguments()) + .print(")"); + return true; case "setLength": printMacroName(targetMethodName); print("((sb, length) => sb.str = sb.str.substring(0, length))(") @@ -896,8 +902,7 @@ public class RemoveJavaDependenciesAdapter extends Java2TypeScriptAdapter { if (newClass.getArgumentCount() == 0 || Util.isNumber(newClass.getArgument(0).getType())) { print("{ str: \"\", toString: function() { return this.str; } }"); } else { - print("{ str: ").print(newClass.getArgument(0)) - .print(", toString: function() { return this.str; } } }"); + print("{ str: ").print(newClass.getArgument(0)).print(", toString: function() { return this.str; } }"); } return true; case "java.lang.ref.WeakReference": diff --git a/transpiler/src/test/java/org/jsweet/test/transpiler/NativeStructuresTests.java b/transpiler/src/test/java/org/jsweet/test/transpiler/NativeStructuresTests.java index 29b6e0ea..c8f4faa9 100644 --- a/transpiler/src/test/java/org/jsweet/test/transpiler/NativeStructuresTests.java +++ b/transpiler/src/test/java/org/jsweet/test/transpiler/NativeStructuresTests.java @@ -50,7 +50,7 @@ public class NativeStructuresTests extends AbstractTest { public void testStringBuilder() { eval((logHandler, result) -> { Assert.assertEquals("There should be no errors", 0, logHandler.reportedProblems.size()); - assertEquals("a,abc,a,abc,ab,X", result.get("trace")); + assertEquals("a,abc,a,abc,ab,X,tEst", result.get("trace")); }, getSourceFile(NativeStringBuilder.class)); } @@ -149,5 +149,6 @@ public class NativeStructuresTests extends AbstractTest { assertEquals(">,0", result.get("trace")); }, getSourceFile(Strings.class)); } + } \ No newline at end of file diff --git a/transpiler/src/test/java/source/nativestructures/NativeStringBuilder.java b/transpiler/src/test/java/source/nativestructures/NativeStringBuilder.java index 9f3795ac..070c748d 100644 --- a/transpiler/src/test/java/source/nativestructures/NativeStringBuilder.java +++ b/transpiler/src/test/java/source/nativestructures/NativeStringBuilder.java @@ -40,6 +40,12 @@ public class NativeStringBuilder { trace.push("X" + sb2.toString()); + StringBuffer sb3 = new StringBuffer("test"); + + sb3.setCharAt(1, 'E'); + + trace.push(sb3.toString()); + $export("trace", trace.join(",")); }