diff options
author | Piotr Fusik <piotr@fusion-lang.org> | 2024-02-28 09:37:41 +0100 |
---|---|---|
committer | Piotr Fusik <piotr@fusion-lang.org> | 2024-02-28 09:37:41 +0100 |
commit | eddb25e7de0704eb6110d7244f00b071d3dc85f5 (patch) | |
tree | b52210ca7aa7276cfd999c04208ed5739a075984 | |
parent | a7cb0c714a85f117922a3d885ff1bbda0bc9f1e9 (diff) |
[json] Refactor Swift.
#140
-rw-r--r-- | GenSwift.fu | 27 | ||||
-rw-r--r-- | libfut.cpp | 27 | ||||
-rw-r--r-- | libfut.cs | 27 | ||||
-rw-r--r-- | libfut.hpp | 1 | ||||
-rw-r--r-- | libfut.js | 27 |
5 files changed, 28 insertions, 81 deletions
diff --git a/GenSwift.fu b/GenSwift.fu index b309266..96294f2 100644 --- a/GenSwift.fu +++ b/GenSwift.fu @@ -446,17 +446,6 @@ public class GenSwift : GenPySwift WriteChar(')'); } - void WriteJsonElementGet!(FuExpr obj, string name, FuPriority parent) - { - if (parent > FuPriority.Equality) - WriteChar('('); - obj.Accept(this, FuPriority.Equality); // FIXME? - Write(" as! "); - Write(name); - if (parent > FuPriority.Equality) - WriteChar(')'); - } - protected override void WriteCallExpr!(FuExpr? obj, FuMethod method, List<FuExpr#> args, FuPriority parent) { switch (method.Id) { @@ -779,19 +768,17 @@ public class GenSwift : GenPySwift WriteJsonElementIs(obj, "NSNull", parent); break; case FuId.JsonElementGetObject: - WriteJsonElementGet(obj, "[String: Any]", parent); - break; case FuId.JsonElementGetArray: - WriteJsonElementGet(obj, "[Any]", parent); - break; case FuId.JsonElementGetString: - WriteJsonElementGet(obj, "String", parent); - break; case FuId.JsonElementGetDouble: - WriteJsonElementGet(obj, "Double", parent); - break; case FuId.JsonElementGetBoolean: - WriteJsonElementGet(obj, "Bool", parent); + if (parent > FuPriority.Equality) + WriteChar('('); + obj.Accept(this, FuPriority.Equality); // FIXME? + Write(" as! "); + WriteType(method.Type); + if (parent > FuPriority.Equality) + WriteChar(')'); break; case FuId.MathMethod: case FuId.MathLog2: @@ -21083,17 +21083,6 @@ void GenSwift::writeJsonElementIs(const FuExpr * obj, std::string_view name, FuP writeChar(')'); } -void GenSwift::writeJsonElementGet(const FuExpr * obj, std::string_view name, FuPriority parent) -{ - if (parent > FuPriority::equality) - writeChar('('); - obj->accept(this, FuPriority::equality); - write(" as! "); - write(name); - if (parent > FuPriority::equality) - writeChar(')'); -} - void GenSwift::writeCallExpr(const FuExpr * obj, const FuMethod * method, const std::vector<std::shared_ptr<FuExpr>> * args, FuPriority parent) { switch (method->id) { @@ -21424,19 +21413,17 @@ void GenSwift::writeCallExpr(const FuExpr * obj, const FuMethod * method, const writeJsonElementIs(obj, "NSNull", parent); break; case FuId::jsonElementGetObject: - writeJsonElementGet(obj, "[String: Any]", parent); - break; case FuId::jsonElementGetArray: - writeJsonElementGet(obj, "[Any]", parent); - break; case FuId::jsonElementGetString: - writeJsonElementGet(obj, "String", parent); - break; case FuId::jsonElementGetDouble: - writeJsonElementGet(obj, "Double", parent); - break; case FuId::jsonElementGetBoolean: - writeJsonElementGet(obj, "Bool", parent); + if (parent > FuPriority::equality) + writeChar('('); + obj->accept(this, FuPriority::equality); + write(" as! "); + writeType(method->type.get()); + if (parent > FuPriority::equality) + writeChar(')'); break; case FuId::mathMethod: case FuId::mathLog2: @@ -21881,17 +21881,6 @@ namespace Fusion WriteChar(')'); } - void WriteJsonElementGet(FuExpr obj, string name, FuPriority parent) - { - if (parent > FuPriority.Equality) - WriteChar('('); - obj.Accept(this, FuPriority.Equality); - Write(" as! "); - Write(name); - if (parent > FuPriority.Equality) - WriteChar(')'); - } - protected override void WriteCallExpr(FuExpr obj, FuMethod method, List<FuExpr> args, FuPriority parent) { switch (method.Id) { @@ -22212,19 +22201,17 @@ namespace Fusion WriteJsonElementIs(obj, "NSNull", parent); break; case FuId.JsonElementGetObject: - WriteJsonElementGet(obj, "[String: Any]", parent); - break; case FuId.JsonElementGetArray: - WriteJsonElementGet(obj, "[Any]", parent); - break; case FuId.JsonElementGetString: - WriteJsonElementGet(obj, "String", parent); - break; case FuId.JsonElementGetDouble: - WriteJsonElementGet(obj, "Double", parent); - break; case FuId.JsonElementGetBoolean: - WriteJsonElementGet(obj, "Bool", parent); + if (parent > FuPriority.Equality) + WriteChar('('); + obj.Accept(this, FuPriority.Equality); + Write(" as! "); + WriteType(method.Type); + if (parent > FuPriority.Equality) + WriteChar(')'); break; case FuId.MathMethod: case FuId.MathLog2: @@ -2789,7 +2789,6 @@ private: void writeRange(const FuExpr * startIndex, const FuExpr * length); bool addVar(std::string_view name); void writeJsonElementIs(const FuExpr * obj, std::string_view name, FuPriority parent); - void writeJsonElementGet(const FuExpr * obj, std::string_view name, FuPriority parent); void writeDefaultValue(const FuType * type); void writeEnumFlagsAnd(const FuExpr * left, std::string_view method, std::string_view notMethod, const FuExpr * right); const FuExpr * writeAssignNested(const FuBinaryExpr * expr); @@ -22441,17 +22441,6 @@ export class GenSwift extends GenPySwift this.writeChar(41); } - #writeJsonElementGet(obj, name, parent) - { - if (parent > FuPriority.EQUALITY) - this.writeChar(40); - obj.accept(this, FuPriority.EQUALITY); - this.write(" as! "); - this.write(name); - if (parent > FuPriority.EQUALITY) - this.writeChar(41); - } - writeCallExpr(obj, method, args, parent) { switch (method.id) { @@ -22774,19 +22763,17 @@ export class GenSwift extends GenPySwift this.#writeJsonElementIs(obj, "NSNull", parent); break; case FuId.JSON_ELEMENT_GET_OBJECT: - this.#writeJsonElementGet(obj, "[String: Any]", parent); - break; case FuId.JSON_ELEMENT_GET_ARRAY: - this.#writeJsonElementGet(obj, "[Any]", parent); - break; case FuId.JSON_ELEMENT_GET_STRING: - this.#writeJsonElementGet(obj, "String", parent); - break; case FuId.JSON_ELEMENT_GET_DOUBLE: - this.#writeJsonElementGet(obj, "Double", parent); - break; case FuId.JSON_ELEMENT_GET_BOOLEAN: - this.#writeJsonElementGet(obj, "Bool", parent); + if (parent > FuPriority.EQUALITY) + this.writeChar(40); + obj.accept(this, FuPriority.EQUALITY); + this.write(" as! "); + this.#writeType(method.type); + if (parent > FuPriority.EQUALITY) + this.writeChar(41); break; case FuId.MATH_METHOD: case FuId.MATH_LOG2: |