diff --git a/furc/include/furc/ast/declaration.hpp b/furc/include/furc/ast/declaration.hpp index 2de5134..12d45f2 100644 --- a/furc/include/furc/ast/declaration.hpp +++ b/furc/include/furc/ast/declaration.hpp @@ -5,10 +5,25 @@ #include "furc/ast/statement.hpp" #include +#include namespace furc { namespace ast { +/** + * @brief Type class for AST declarations. + */ +class type { +public: + template >> + type(NameFwd&& name) + : m_name(std::forward(name)) {} +public: + const std::string& name() const { return m_name; } +private: + std::string m_name; +}; + /** * @brief Declaration node type. */ diff --git a/furc/include/furc/ast/fwd.hpp b/furc/include/furc/ast/fwd.hpp index cb0d694..7844c17 100644 --- a/furc/include/furc/ast/fwd.hpp +++ b/furc/include/furc/ast/fwd.hpp @@ -71,6 +71,10 @@ using expression_node_p = node_p; /**< Alias for a shared point using expression_node_r = node_r; /**< Alias for expression_node result */ +class type; + +using type_r = furlang::result; /**< Alias for AST type result */ + class declaration_node; using declaration_node_p = node_p; /**< Alias for a shared pointer to declaration_node. */