summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPiotr Fusik <piotr@fusion-lang.org>2024-02-29 15:55:25 +0100
committerPiotr Fusik <piotr@fusion-lang.org>2024-02-29 15:55:25 +0100
commitba10fe047d4e1a6d0dc13cc2a14d34bd776f2e4a (patch)
treec1e939d27d8ee478b299cb9e950aaea4670d2e7f
parent466d5d612143b5f629a69e74ff7e08974398f20d (diff)
[c] Fix return of dynamic object initializer with pending destructions.
#140
-rw-r--r--GenC.fu1
-rw-r--r--libfut.cpp1
-rw-r--r--libfut.cs1
-rw-r--r--libfut.js1
-rw-r--r--test/JsonElement.fu4
5 files changed, 6 insertions, 2 deletions
diff --git a/GenC.fu b/GenC.fu
index 0ab9ac4..9d459fc 100644
--- a/GenC.fu
+++ b/GenC.fu
@@ -2929,6 +2929,7 @@ public class GenC : GenCCpp
return;
}
WriteCTemporaries(statement.Value);
+ WriteTemporaries(statement.Value);
EnsureChildBlock();
StartDefinition(this.CurrentMethod.Type, true, true);
Write("returnValue = ");
diff --git a/libfut.cpp b/libfut.cpp
index 47eb93f..56e09d3 100644
--- a/libfut.cpp
+++ b/libfut.cpp
@@ -11836,6 +11836,7 @@ void GenC::visitReturn(const FuReturn * statement)
return;
}
writeCTemporaries(statement->value.get());
+ writeTemporaries(statement->value.get());
ensureChildBlock();
startDefinition(this->currentMethod->type.get(), true, true);
write("returnValue = ");
diff --git a/libfut.cs b/libfut.cs
index 3d113b8..f52aa0e 100644
--- a/libfut.cs
+++ b/libfut.cs
@@ -12105,6 +12105,7 @@ namespace Fusion
return;
}
WriteCTemporaries(statement.Value);
+ WriteTemporaries(statement.Value);
EnsureChildBlock();
StartDefinition(this.CurrentMethod.Type, true, true);
Write("returnValue = ");
diff --git a/libfut.js b/libfut.js
index 413a072..0507846 100644
--- a/libfut.js
+++ b/libfut.js
@@ -12505,6 +12505,7 @@ export class GenC extends GenCCpp
return;
}
this.#writeCTemporaries(statement.value);
+ this.writeTemporaries(statement.value);
this.ensureChildBlock();
this.#startDefinition(this.currentMethod.type, true, true);
this.write("returnValue = ");
diff --git a/test/JsonElement.fu b/test/JsonElement.fu
index dbc4205..5d5119c 100644
--- a/test/JsonElement.fu
+++ b/test/JsonElement.fu
@@ -1,4 +1,4 @@
-#if CPP || JAVA
+#if C || CPP || JAVA
abstract class JsonElement
{
public virtual bool IsObject() => false;
@@ -352,7 +352,7 @@ public static class Test
{
public static bool Run()
{
- JsonElement# json; //FAIL: c TODO; cl
+ JsonElement# json; //FAIL: cl
json = JsonElement.Parse("\"foo\"");
if (!json.IsString() || json.GetString() != "foo")
return false;