From 967be9e750221ab2ab783f95df79bb26d290a45e Mon Sep 17 00:00:00 2001 From: Martial Simon Date: Mon, 15 Sep 2025 01:07:58 +0200 Subject: add: added projects --- tiger-compiler/src/combine/libcombine.hh | 44 ++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 tiger-compiler/src/combine/libcombine.hh (limited to 'tiger-compiler/src/combine/libcombine.hh') diff --git a/tiger-compiler/src/combine/libcombine.hh b/tiger-compiler/src/combine/libcombine.hh new file mode 100644 index 0000000..66f3c4c --- /dev/null +++ b/tiger-compiler/src/combine/libcombine.hh @@ -0,0 +1,44 @@ +/** + ** \file combine/libcombine.hh + ** \brief Declare functions and variables exported by combine module. + */ + +#pragma once + +#include +#include +#include + +namespace combine +{ + /*-------. + | Bind. | + `-------*/ + + /** \brief Bind identifier uses to their definition, allowing + function overloading, and return a list of potential definition + sites for each function call. + + \param tree AST to bind. + + \return a pair whose first element is the potential function + bindings, and the second element the error status. */ + std::pair + combine_bind(ast::Ast& tree, bool overloads_enabled); + + /*------------------------------. + | Compute types with overload. | + `------------------------------*/ + + /** \brief Check types allowing function overloading. + + \param tree abstract syntax tree's root. + \param combine_bindings potential function bindings. + + \return success of the type-checking. */ + misc::error + combine_types_check(ast::Ast& tree, + const overload::overfun_bindings_type& combine_bindings, + bool overloads_enabled); + +} // namespace combine -- cgit v1.2.3