feat: introduce AST type class

Refs: #15
This commit is contained in:
2026-06-24 15:30:28 +02:00
parent 0baf896c3a
commit b5dcd6690a
2 changed files with 19 additions and 0 deletions
+15
View File
@@ -5,10 +5,25 @@
#include "furc/ast/statement.hpp" #include "furc/ast/statement.hpp"
#include <string> #include <string>
#include <type_traits>
namespace furc { namespace furc {
namespace ast { namespace ast {
/**
* @brief Type class for AST declarations.
*/
class type {
public:
template <typename NameFwd, typename = std::enable_if_t<std::is_constructible_v<std::string, NameFwd>>>
type(NameFwd&& name)
: m_name(std::forward<NameFwd>(name)) {}
public:
const std::string& name() const { return m_name; }
private:
std::string m_name;
};
/** /**
* @brief Declaration node type. * @brief Declaration node type.
*/ */
+4
View File
@@ -71,6 +71,10 @@ using expression_node_p = node_p<expression_node>; /**< Alias for a shared point
using expression_node_r = node_r<expression_node>; /**< Alias for expression_node result */ using expression_node_r = node_r<expression_node>; /**< Alias for expression_node result */
class type;
using type_r = furlang::result<type, error>; /**< Alias for AST type result */
class declaration_node; class declaration_node;
using declaration_node_p = node_p<declaration_node>; /**< Alias for a shared pointer to declaration_node. */ using declaration_node_p = node_p<declaration_node>; /**< Alias for a shared pointer to declaration_node. */