Add git hooks

Signed-off-by: CHatingPython <chatingpython@gmail.com>
This commit is contained in:
CHatingPython
2026-05-26 13:14:37 +02:00
committed by CHatingPython
parent 7017d83204
commit 4a58e97812
9 changed files with 70 additions and 43 deletions
-16
View File
@@ -50,22 +50,6 @@ class function_definition_node : public function_declarartion_node {
public:
function_definition_node(front::token name, function_body_handle&& body)
: function_declarartion_node(name), m_body(std::move(body)) {}
~function_definition_node() override = default;
function_definition_node(function_definition_node&& other) noexcept
: function_declarartion_node(std::move(other)), m_body(std::move(other.m_body)) {}
function_definition_node(const function_definition_node&) = delete;
function_definition_node& operator=(function_definition_node&& other) noexcept {
if (this == &other) return *this;
function_declarartion_node::operator=(std::move(other));
m_body = std::move(other.m_body);
return *this;
}
function_definition_node& operator=(const function_definition_node&) = delete;
public:
declaration_node_t declaration_type() const override { return declaration_node_t::FunctionDefinition; }
+1 -1
View File
@@ -32,7 +32,7 @@ public:
const handle<std::string_view>& value() const { return m_value; }
public:
std::ostream& print(std::ostream& os) const override {
if (m_value.has_error()) return os << (std::string)m_value;
if (m_value.has_error()) return os << m_value.error();
return os << "string literal (" << *m_value << ")";
}
private:
+2 -2
View File
@@ -8,8 +8,8 @@ namespace furc {
struct location {
std::string_view filename;
std::size_t line;
std::size_t column;
std::size_t line = 0;
std::size_t column = 0;
};
static inline std::ostream& operator<<(std::ostream& os, const location& location) {
+12 -13
View File
@@ -75,13 +75,10 @@ public:
Error error() const { return m_error; }
operator reference() { return *m_value; }
operator const_reference() const { return *m_value; }
reference operator*() { return *m_value; }
const_reference operator*() const { return *m_value; }
pointer operator->() { return &*m_value; }
const_pointer operator->() const { return &*m_value; }
reference operator*() { return m_value.value(); } // NOLINT(bugprone-unchecked-optional-access)
const_reference operator*() const { return m_value.value(); } // NOLINT(bugprone-unchecked-optional-access)
pointer operator->() { return &m_value.value(); } // NOLINT(bugprone-unchecked-optional-access)
const_pointer operator->() const { return &m_value.value(); } // NOLINT(bugprone-unchecked-optional-access)
public:
bool operator==(const T& rhs) const { return m_value.has_value() && *m_value == rhs; }
public:
@@ -119,7 +116,7 @@ public:
template <typename U, typename = std::enable_if_t<std::is_base_of_v<value_type, U>>>
handle(location location, std::shared_ptr<U> value)
: m_data(data(location, value)) {}
: m_data(data(location, std::move(value))) {}
template <typename U,
typename = std::enable_if_t<std::is_base_of_v<value_type, U> || std::is_base_of_v<U, value_type>>>
@@ -196,16 +193,18 @@ private:
template <typename U, typename = std::enable_if_t<std::is_base_of_v<value_type, U>>>
data(struct location location, std::shared_ptr<U> value)
: location(location), value(value) {}
: location(location), value(std::move(value)) {}
template <typename U,
typename = std::enable_if_t<std::is_base_of_v<value_type, U> || std::is_base_of_v<U, value_type>>>
data(handle<U*, Error>&& other) // NOLINT
: location(other.m_data->location) {
data(handle<U*, Error>&& other) // NOLINT
: location(other.m_data->location) { // NOLINT(bugprone-unchecked-optional-access)
if constexpr (std::is_base_of_v<value_type, U>) {
value = std::static_pointer_cast<value_type>(std::move(other.m_data->value));
value = std::static_pointer_cast<value_type>(
std::move(other.m_data->value)); // NOLINT(bugprone-unchecked-optional-access)
} else {
value = std::dynamic_pointer_cast<value_type>(std::move(other.m_data->value));
value = std::dynamic_pointer_cast<value_type>(
std::move(other.m_data->value)); // NOLINT(bugprone-unchecked-optional-access)
}
}