From 1fa9e50b5711c354225d6dccb2dd974d90e53394 Mon Sep 17 00:00:00 2001 From: CHatingPython Date: Fri, 29 May 2026 20:33:24 +0200 Subject: [PATCH] Remove the paren expression Signed-off-by: CHatingPython --- furc/include/furc/ast/expression.hpp | 20 -------------------- furc/src/ast.cpp | 9 --------- furc/src/front/parser.cpp | 2 +- furc/test/parser.cpp | 7 ++----- 4 files changed, 3 insertions(+), 35 deletions(-) diff --git a/furc/include/furc/ast/expression.hpp b/furc/include/furc/ast/expression.hpp index 6cb9349..1e6f0eb 100644 --- a/furc/include/furc/ast/expression.hpp +++ b/furc/include/furc/ast/expression.hpp @@ -94,26 +94,6 @@ private: using binop_expression_node_h = node_handle; -class paren_expression_node : public expression_node { -public: - paren_expression_node(expression_node_h&& node) - : m_node(std::move(node)) {} - - const expression_node_h& get_node() const { return m_node; } - expression_node_h& get_node() { return m_node; } - expression_node_h&& move_node() { return std::move(m_node); } -public: - expression_node_t expression_type() const override { return expression_node_t::Paren; } - - std::ostream& print(std::ostream& os) const override; -protected: - bool equal(const node& rhs) const override; -private: - expression_node_h m_node; -}; - -using paren_expression_node_h = node_handle; - } // namespace ast } // namespace furc diff --git a/furc/src/ast.cpp b/furc/src/ast.cpp index cf948f5..3496546 100644 --- a/furc/src/ast.cpp +++ b/furc/src/ast.cpp @@ -82,15 +82,6 @@ bool binop_expression_node::equal(const node& rhsNode) const { return expression_node::equal(rhsNode) && m_type == rhs.m_type && m_lhs == rhs.m_lhs && m_rhs == rhs.m_rhs; } -std::ostream& paren_expression_node::print(std::ostream& os) const { - return os << *m_node; -} - -bool paren_expression_node::equal(const node& rhsNode) const { - const auto& rhs = reinterpret_cast(rhsNode); - return expression_node::equal(rhsNode) && m_node == rhs.m_node; -} - bool declaration_node::equal(const node& rhs) const { return declaration_type() == reinterpret_cast(rhs).declaration_type(); } diff --git a/furc/src/front/parser.cpp b/furc/src/front/parser.cpp index 92f5f8a..02a5c94 100644 --- a/furc/src/front/parser.cpp +++ b/furc/src/front/parser.cpp @@ -151,7 +151,7 @@ ast::expression_node_h parser::parse_expression_primary() { auto node = parse_expression(); auto err = eat_token(token_t::Rparen); if (err.has_error()) return err; - return ast::paren_expression_node_h{ tok.location(), m_arena, std::move(node) }; + return node; } default: { auto literal = parse_literal(); diff --git a/furc/test/parser.cpp b/furc/test/parser.cpp index 2f72008..358170d 100644 --- a/furc/test/parser.cpp +++ b/furc/test/parser.cpp @@ -200,11 +200,8 @@ TEST(Parser, Paren) { unaryop_expression_node_h dec = retVal; EXPECT_EQ(dec->type(), unaryop_expression_node_t::PrefixDecrement); - EXPECT_EQ(dec->get_node()->expression_type(), expression_node_t::Paren); - paren_expression_node_h paren = dec->get_node(); - - EXPECT_EQ(paren->get_node()->expression_type(), expression_node_t::Unaryop); - unaryop_expression_node_h inc = paren->get_node(); + EXPECT_EQ(dec->get_node()->expression_type(), expression_node_t::Unaryop); + unaryop_expression_node_h inc = dec->get_node(); EXPECT_EQ(inc->type(), unaryop_expression_node_t::PostfixIncrement); EXPECT_INTLIT(inc->get_node(), 5); }