This commit is contained in:
Renaud Pawlak 2017-08-17 09:04:49 +02:00
parent a0dc4721ac
commit e017ac98be
3 changed files with 21 additions and 6 deletions

View File

@ -674,14 +674,21 @@ public class RemoveJavaDependenciesAdapter extends Java2TypeScriptAdapter {
case "append":
printMacroName(targetMethodName);
if (invocation.getArgumentCount() == 1) {
print("(sb => sb.str = sb.str.concat(<any>").printArgList(invocation.getArguments()).print("))(");
print("(sb => { sb.str = sb.str.concat(<any>").printArgList(invocation.getArguments())
.print("); return sb; })(");
print(invocation.getTargetExpression(), delegate).print(")");
} else {
print("(sb => sb.str = sb.str.concat((<any>").print(invocation.getArgument(0)).print(").substr(")
.printArgList(invocation.getArgumentTail()).print(")))(");
print("(sb => { sb.str = sb.str.concat((<any>").print(invocation.getArgument(0)).print(").substr(")
.printArgList(invocation.getArgumentTail()).print(")); return sb; })(");
print(invocation.getTargetExpression(), delegate).print(")");
}
return true;
case "insert":
printMacroName(targetMethodName);
print("((sb, index, c) => { sb.str = sb.str.substr(0, index) + c + sb.str.substr(index); return sb; })(");
print(invocation.getTargetExpression(), delegate).print(", ").printArgList(invocation.getArguments())
.print(")");
return true;
case "setCharAt":
printMacroName(targetMethodName);
print("((sb, index, c) => sb.str = sb.str.substr(0, index) + c + sb.str.substr(index + 1))(");
@ -690,13 +697,13 @@ public class RemoveJavaDependenciesAdapter extends Java2TypeScriptAdapter {
return true;
case "deleteCharAt":
printMacroName(targetMethodName);
print("((sb, index) => sb.str = sb.str.substr(0, index) + sb.str.substr(index + 1))(");
print("((sb, index) => { sb.str = sb.str.substr(0, index) + sb.str.substr(index + 1); return sb; })(");
print(invocation.getTargetExpression(), delegate).print(", ").printArgList(invocation.getArguments())
.print(")");
return true;
case "delete":
printMacroName(targetMethodName);
print("((sb, i1, i2) => sb.str = sb.str.substr(0, i1) + sb.str.substr(i2))(");
print("((sb, i1, i2) => { sb.str = sb.str.substr(0, i1) + sb.str.substr(i2); return sb; })(");
print(invocation.getTargetExpression(), delegate).print(", ").printArgList(invocation.getArguments())
.print(")");
return true;

View File

@ -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,tEst,E,4,tst,tt", result.get("trace"));
assertEquals("a,abc,a,abc,ab,X,tEst,E,4,tst,tt,:qqqq,:aaaaqqqq", result.get("trace"));
}, getSourceFile(NativeStringBuilder.class));
}

View File

@ -58,6 +58,14 @@ public class NativeStringBuilder {
trace.push(""+sb3);
StringBuilder result = new StringBuilder();
final String variableName = "qqqq";
result.append(":").append(variableName);
trace.push(result.toString());
result.insert(1, "aaaa");
trace.push(result.toString());
$export("trace", trace.join(","));
}