Types for furc #22
@@ -5,10 +5,25 @@
|
||||
#include "furc/ast/statement.hpp"
|
||||
|
||||
#include <string>
|
||||
#include <type_traits>
|
||||
|
||||
namespace furc {
|
||||
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.
|
||||
*/
|
||||
|
||||
@@ -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 */
|
||||
|
||||
class type;
|
||||
|
||||
using type_r = furlang::result<type, error>; /**< Alias for AST type result */
|
||||
|
||||
class 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