From c56877035d6600b463a9cbf0e339f7548c0b46fd Mon Sep 17 00:00:00 2001 From: _ov4 Date: Wed, 21 Oct 2026 05:54:26 +0000 Subject: feat(codegen): instantiate function templates by deduction Co-Authored-By: Claude Opus 5.5 --- include/cps/FunctionGen.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'include/cps/FunctionGen.h') diff --git a/include/cps/FunctionGen.h b/include/cps/FunctionGen.h index 57a27ff..a50e70b 100644 --- a/include/cps/FunctionGen.h +++ b/include/cps/FunctionGen.h @@ -5,6 +5,7 @@ #include "cps/FunctionAST.h" #include "cps/TypeSystem.h" #include +#include #include #include #include @@ -73,7 +74,7 @@ private: int &DiagnosticLine; void reportError(const char *Fmt, ...); - IdentifierMap> Signatures; + IdentifierMap> Signatures; IdentifierMap> LinkIndex; std::map PrototypeLinks; std::map UnitPaths; @@ -106,7 +107,8 @@ public: void setCurrentUnit(size_t Unit, const std::string &Path) { CurrentUnit = Unit; UnitPaths[Unit] = Path; } void setCallHook(std::function Hook) { BeforeCall = std::move(Hook); } void setVisibility(std::function Predicate) { Visible = std::move(Predicate); } - std::vector getOverloads(const std::string &Name) const; + std::vector getOverloads(const std::string &Name, bool AllUnits = false) const; + static bool isReservedRuntimeName(const std::string &Name); bool hasFunction(const std::string &Name) const { return !getOverloads(Name).empty(); } const FuncSig *getSignatureByLink(const std::string &Name) const; -- cgit v1.3.1-4-g156e