From 73f302ac699d91ec5a923d3b2d15d7149220a180 Mon Sep 17 00:00:00 2001 From: Piotr Fusik Date: Thu, 27 Jun 2024 20:00:35 +0200 Subject: [PATCH] [cleanup] Static calls are already checked. --- Sema.fu | 3 +-- libfut.cpp | 2 +- libfut.cs | 2 +- libfut.js | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Sema.fu b/Sema.fu index 5d4c6388..e37aa582 100644 --- a/Sema.fu +++ b/Sema.fu @@ -1303,7 +1303,6 @@ public class FuSema return PoisonError(symbol, "Expected a method"); } - // TODO: check static if (!method.IsStatic() && method.IsMutator()) { if (symbol.Left == null) { if (!this.CurrentMethod.IsMutator()) @@ -1367,7 +1366,7 @@ public class FuSema symbol.Symbol = method; - if (method.CallType == FuCallType.Static + if (method.IsStatic() && method.Body is FuReturn! ret && arguments.All(arg => arg is FuLiteral) && !this.CurrentPureMethods.Contains(method)) { diff --git a/libfut.cpp b/libfut.cpp index 244117a4..d44f5124 100644 --- a/libfut.cpp +++ b/libfut.cpp @@ -5870,7 +5870,7 @@ std::shared_ptr FuSema::resolveCallWithArguments(std::shared_ptrsymbol = method; FuReturn * ret; - if (method->callType == FuCallType::static_ && (ret = dynamic_cast(method->body.get())) && std::all_of(arguments->begin(), arguments->end(), [](const std::shared_ptr &arg) { return dynamic_cast(arg.get()); }) && !this->currentPureMethods.contains(method)) { + if (method->isStatic() && (ret = dynamic_cast(method->body.get())) && std::all_of(arguments->begin(), arguments->end(), [](const std::shared_ptr &arg) { return dynamic_cast(arg.get()); }) && !this->currentPureMethods.contains(method)) { this->currentPureMethods.insert(method); i = 0; for (const FuVar * param = method->firstParameter(); param != nullptr; param = param->nextVar()) { diff --git a/libfut.cs b/libfut.cs index 758f024e..2ee64697 100644 --- a/libfut.cs +++ b/libfut.cs @@ -5975,7 +5975,7 @@ FuExpr ResolveCallWithArguments(FuCallExpr expr, List arguments) ReportError(expr.Method, $"Method marked 'throws {exception.Name}' called from a method without it"); } symbol.Symbol = method; - if (method.CallType == FuCallType.Static && method.Body is FuReturn ret && arguments.TrueForAll(arg => arg is FuLiteral) && !this.CurrentPureMethods.Contains(method)) { + if (method.IsStatic() && method.Body is FuReturn ret && arguments.TrueForAll(arg => arg is FuLiteral) && !this.CurrentPureMethods.Contains(method)) { this.CurrentPureMethods.Add(method); i = 0; for (FuVar param = method.FirstParameter(); param != null; param = param.NextVar()) { diff --git a/libfut.js b/libfut.js index e7a5b87f..9a5fdb1c 100644 --- a/libfut.js +++ b/libfut.js @@ -6298,7 +6298,7 @@ export class FuSema } symbol.symbol = method; let ret; - if (method.callType == FuCallType.STATIC && (ret = method.body) instanceof FuReturn && arguments_.every(arg => arg instanceof FuLiteral) && !this.#currentPureMethods.has(method)) { + if (method.isStatic() && (ret = method.body) instanceof FuReturn && arguments_.every(arg => arg instanceof FuLiteral) && !this.#currentPureMethods.has(method)) { this.#currentPureMethods.add(method); i = 0; for (let param = method.firstParameter(); param != null; param = param.nextVar()) {