From 41f85181a3637eeae8d4afc6eca10365e583f396 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20Reuh=20Fildadut?= Date: Wed, 3 Jan 2024 22:12:46 +0100 Subject: [PATCH] Overload cleanup --- anselme/ast/Function.lua | 4 ++-- anselme/ast/LuaFunction.lua | 4 ++-- anselme/ast/Overload.lua | 8 ++++---- anselme/ast/abstract/Overloadable.lua | 8 ++++---- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/anselme/ast/Function.lua b/anselme/ast/Function.lua index a3bb771..5294ea2 100644 --- a/anselme/ast/Function.lua +++ b/anselme/ast/Function.lua @@ -76,10 +76,10 @@ Function = Overloadable { compatible_with_arguments = function(self, state, args) return args:match_parameter_tuple(state, self.parameters) end, - format_parameters = function(self, state) + format_signature = function(self, state) return self.parameters:format(state) end, - hash_parameters = function(self) + hash_signature = function(self) return self.parameters:hash() end, call_dispatched = function(self, state, args) diff --git a/anselme/ast/LuaFunction.lua b/anselme/ast/LuaFunction.lua index 9d87f7c..820c489 100644 --- a/anselme/ast/LuaFunction.lua +++ b/anselme/ast/LuaFunction.lua @@ -40,10 +40,10 @@ LuaFunction = ast.abstract.Runtime(Overloadable) { compatible_with_arguments = function(self, state, args) return args:match_parameter_tuple(state, self.parameters) end, - format_parameters = function(self, state) + format_signature = function(self, state) return self.parameters:format(state) end, - hash_parameters = function(self) + hash_signature = function(self) return self.parameters:hash() end, call_dispatched = function(self, state, args) diff --git a/anselme/ast/Overload.lua b/anselme/ast/Overload.lua index e312e39..6400e9d 100644 --- a/anselme/ast/Overload.lua +++ b/anselme/ast/Overload.lua @@ -17,9 +17,9 @@ Overload = ast.abstract.Node { end end, insert = function(self, val) -- only for construction - assert0(not self._signatures[val:hash_parameters()], ("a function with parameters %s is already defined in the overload"):format(val:format_parameters())) + assert0(not self._signatures[val:hash_signature()], ("a function with parameters %s is already defined in the overload"):format(val:format_signature())) table.insert(self.list, val) - self._signatures[val:hash_parameters()] = true + self._signatures[val:hash_signature()] = true end, _format = function(self, ...) @@ -50,12 +50,12 @@ Overload = ast.abstract.Node { if secondary_specificity > success_secondary_specificity then success, success_specificity, success_secondary_specificity = fn, specificity, secondary_specificity elseif secondary_specificity == success_secondary_specificity then - return nil, ("more than one function match %s, matching functions were at least (specificity %s.%s):\n\t• %s\n\t• %s"):format(args:format(state), specificity, secondary_specificity, fn:format_parameters(state), success:format_parameters(state)) + return nil, ("more than one function match %s, matching functions were at least (specificity %s.%s):\n\t• %s\n\t• %s"):format(args:format(state), specificity, secondary_specificity, fn:format_signature(state), success:format_signature(state)) end end -- no need to add error message for less specific function since we already should have at least one success elseif not success then - table.insert(failure, fn:format_parameters(state) .. ": " .. secondary_specificity) + table.insert(failure, fn:format_signature(state) .. ": " .. secondary_specificity) end end if success then diff --git a/anselme/ast/abstract/Overloadable.lua b/anselme/ast/abstract/Overloadable.lua index 0cb34e2..7e0cf55 100644 --- a/anselme/ast/abstract/Overloadable.lua +++ b/anselme/ast/abstract/Overloadable.lua @@ -13,12 +13,12 @@ return ast.abstract.Node { end, -- return string - format_parameters = function(self, state) - return self:format(state) + format_signature = function(self, state) + error("not implemented for "..self.type) end, -- return string - hash_parameters = function(self) - return self:hash() + hash_signature = function(self) + error("not implemented for "..self.type) end, -- can be called either after a successful :dispatch or :compatible_with_arguments