diff --git a/GenC.fu b/GenC.fu index 38ff303a..e744776c 100644 --- a/GenC.fu +++ b/GenC.fu @@ -134,6 +134,12 @@ public class GenC : GenCCpp && dict.GetValueType() is FuStorageType; } + protected override void StartTemporaryVar!(FuType type) + { + // overridden just to avoid the unnecessary space + StartDefinition(type, true, true); + } + void WriteTemporaryName!(int id) { Write("futemp"); diff --git a/libfut.cpp b/libfut.cpp index 6e45bf5c..688d8dd6 100644 --- a/libfut.cpp +++ b/libfut.cpp @@ -9079,6 +9079,11 @@ bool GenC::isDictionaryClassStgIndexing(const FuExpr * expr) return (indexing = dynamic_cast(expr)) && indexing->op == FuToken::leftBracket && (dict = dynamic_cast(indexing->left->type.get())) && dict->class_->typeParameterCount == 2 && dynamic_cast(dict->getValueType().get()); } +void GenC::startTemporaryVar(const FuType * type) +{ + startDefinition(type, true, true); +} + void GenC::writeTemporaryName(int id) { write("futemp"); diff --git a/libfut.cs b/libfut.cs index c2a17e25..32e3174b 100644 --- a/libfut.cs +++ b/libfut.cs @@ -9316,6 +9316,11 @@ static bool IsDictionaryClassStgIndexing(FuExpr expr) return expr is FuBinaryExpr indexing && indexing.Op == FuToken.LeftBracket && indexing.Left.Type is FuClassType dict && dict.Class.TypeParameterCount == 2 && dict.GetValueType() is FuStorageType; } + protected override void StartTemporaryVar(FuType type) + { + StartDefinition(type, true, true); + } + void WriteTemporaryName(int id) { Write("futemp"); diff --git a/libfut.hpp b/libfut.hpp index f146beda..7e2ba7ab 100644 --- a/libfut.hpp +++ b/libfut.hpp @@ -2033,6 +2033,7 @@ class GenC : public GenCCpp virtual void writePrintfLongPrefix(); void writePrintfWidth(const FuInterpolatedPart * part) override; virtual void writeInterpolatedStringArgBase(const FuExpr * expr); + void startTemporaryVar(const FuType * type) override; void writeInterpolatedStringArg(const FuExpr * expr) override; virtual void writeCamelCaseNotKeyword(std::string_view name); void writeName(const FuSymbol * symbol) override; diff --git a/libfut.js b/libfut.js index 361e64e1..33b5bac6 100644 --- a/libfut.js +++ b/libfut.js @@ -9653,6 +9653,11 @@ export class GenC extends GenCCpp return (indexing = expr) instanceof FuBinaryExpr && indexing.op == FuToken.LEFT_BRACKET && (dict = indexing.left.type) instanceof FuClassType && dict.class.typeParameterCount == 2 && dict.getValueType() instanceof FuStorageType; } + startTemporaryVar(type) + { + this.#startDefinition(type, true, true); + } + #writeTemporaryName(id) { this.write("futemp");