diff --git a/GenC.fu b/GenC.fu index 9d459fc9..2f893177 100644 --- a/GenC.fu +++ b/GenC.fu @@ -1953,7 +1953,7 @@ public class GenC : GenCCpp Write("_TryParse(&"); obj.Accept(this, FuPriority.Primary); Write(", "); - args[0].Accept(this, FuPriority.Argument); + WriteTemporaryOrExpr(args[0], FuPriority.Argument); if (obj.Type is FuIntegerType) WriteTryParseRadix(args); WriteChar(')'); diff --git a/libfut.cpp b/libfut.cpp index 56e09d3e..4948af4e 100644 --- a/libfut.cpp +++ b/libfut.cpp @@ -10839,7 +10839,7 @@ void GenC::writeTryParse(const FuExpr * obj, const std::vectoraccept(this, FuPriority::primary); write(", "); - (*args)[0]->accept(this, FuPriority::argument); + writeTemporaryOrExpr((*args)[0].get(), FuPriority::argument); if (dynamic_cast(obj->type.get())) writeTryParseRadix(args); writeChar(')'); diff --git a/libfut.cs b/libfut.cs index f52aa0e9..bd15ce1f 100644 --- a/libfut.cs +++ b/libfut.cs @@ -11140,7 +11140,7 @@ void WriteTryParse(FuExpr obj, List args) Write("_TryParse(&"); obj.Accept(this, FuPriority.Primary); Write(", "); - args[0].Accept(this, FuPriority.Argument); + WriteTemporaryOrExpr(args[0], FuPriority.Argument); if (obj.Type is FuIntegerType) WriteTryParseRadix(args); WriteChar(')'); diff --git a/libfut.js b/libfut.js index 05078460..deae9b16 100644 --- a/libfut.js +++ b/libfut.js @@ -11525,7 +11525,7 @@ export class GenC extends GenCCpp this.write("_TryParse(&"); obj.accept(this, FuPriority.PRIMARY); this.write(", "); - args[0].accept(this, FuPriority.ARGUMENT); + this.#writeTemporaryOrExpr(args[0], FuPriority.ARGUMENT); if (obj.type instanceof FuIntegerType) this.writeTryParseRadix(args); this.writeChar(41); diff --git a/test/JsonElement.fu b/test/JsonElement.fu index 5d5119ca..90f5c6e9 100644 --- a/test/JsonElement.fu +++ b/test/JsonElement.fu @@ -352,7 +352,7 @@ public static class Test { public static bool Run() { - JsonElement# json; //FAIL: cl + JsonElement# json; //FAIL: c leak TODO; cl json = JsonElement.Parse("\"foo\""); if (!json.IsString() || json.GetString() != "foo") return false;