@@ -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.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -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. */
|
||||||
|
|||||||
Reference in New Issue
Block a user