From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gnu.wildebeest.org (wildebeest.demon.nl [212.238.236.112]) by sourceware.org (Postfix) with ESMTPS id 83E723858C27 for ; Wed, 1 Sep 2021 00:16:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 83E723858C27 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=klomp.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=klomp.org Received: from reform (deer0x1b.wildebeest.org [172.31.17.157]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by gnu.wildebeest.org (Postfix) with ESMTPSA id 34DCF304C262; Wed, 1 Sep 2021 02:16:25 +0200 (CEST) Received: by reform (Postfix, from userid 1000) id 090EA2E81023; Wed, 1 Sep 2021 02:16:25 +0200 (CEST) From: Mark Wielaard To: gcc-rust@gcc.gnu.org Cc: Mark Wielaard Subject: [PATCH 1/3] StructExprTuple doesn't really exist Date: Wed, 1 Sep 2021 02:15:40 +0200 Message-Id: <20210901001542.160965-2-mark@klomp.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210901001542.160965-1-mark@klomp.org> References: <20210901001542.160965-1-mark@klomp.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-10.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-rust@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: gcc-rust mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Sep 2021 00:16:43 -0000 A StructExprTuple is parsed as a CallExpr. Both (can) start with a PathInExpression followed by zero or more Expressions between brackets. Only, after type checking, when actually generating gcc generic trees is a distinction made between a function call or tuple constructor. Remove the AST and HIR StructExprTuple classes which are never used. --- gcc/rust/ast/rust-ast-full-decls.h | 1 - gcc/rust/ast/rust-ast-full-test.cc | 44 ----------- gcc/rust/ast/rust-ast-visitor.h | 1 - gcc/rust/ast/rust-expr.h | 69 ----------------- gcc/rust/backend/rust-compile-base.h | 1 - gcc/rust/expand/rust-macro-expand.cc | 30 -------- gcc/rust/hir/rust-ast-lower-base.h | 1 - gcc/rust/hir/tree/rust-hir-expr.h | 74 ------------------- gcc/rust/hir/tree/rust-hir-full-decls.h | 1 - gcc/rust/hir/tree/rust-hir-full-test.cc | 59 --------------- gcc/rust/hir/tree/rust-hir-visitor.h | 1 - gcc/rust/lint/rust-lint-marklive-base.h | 1 - gcc/rust/resolve/rust-ast-resolve-base.h | 1 - gcc/rust/typecheck/rust-hir-const-fold-base.h | 1 - gcc/rust/typecheck/rust-hir-type-check-base.h | 1 - gcc/rust/typecheck/rust-hir-type-check-util.h | 1 - 16 files changed, 287 deletions(-) diff --git a/gcc/rust/ast/rust-ast-full-decls.h b/gcc/rust/ast/rust-ast-full-decls.h index 7644dfe240c..205da881ed4 100644 --- a/gcc/rust/ast/rust-ast-full-decls.h +++ b/gcc/rust/ast/rust-ast-full-decls.h @@ -109,7 +109,6 @@ class StructExprFieldIdentifierValue; class StructExprFieldIndexValue; class StructExprStructFields; class StructExprStructBase; -class StructExprTuple; class StructExprUnit; class EnumVariantExpr; class EnumExprField; diff --git a/gcc/rust/ast/rust-ast-full-test.cc b/gcc/rust/ast/rust-ast-full-test.cc index c18d4c4fd74..1a447ae0198 100644 --- a/gcc/rust/ast/rust-ast-full-test.cc +++ b/gcc/rust/ast/rust-ast-full-test.cc @@ -3239,44 +3239,6 @@ StructExpr::as_string () const return str; } -std::string -StructExprTuple::as_string () const -{ - std::string str = StructExpr::as_string (); - - if (exprs.empty ()) - { - str += "()"; - } - else - { - auto i = exprs.begin (); - auto e = exprs.end (); - - // debug - null pointer check - if (*i == nullptr) - return "ERROR_MARK_STRING - nullptr struct expr tuple field"; - - str += '('; - for (; i != e; i++) - { - str += (*i)->as_string (); - if (e != i + 1) - str += ", "; - } - str += ')'; - } - - indent_spaces (enter); - indent_spaces (enter); - // inner attributes - str += append_attributes (inner_attrs, INNER); - indent_spaces (out); - indent_spaces (out); - - return str; -} - std::string StructExprStruct::as_string () const { @@ -5222,12 +5184,6 @@ StructExprStructBase::accept_vis (ASTVisitor &vis) vis.visit (*this); } -void -StructExprTuple::accept_vis (ASTVisitor &vis) -{ - vis.visit (*this); -} - void StructExprUnit::accept_vis (ASTVisitor &vis) { diff --git a/gcc/rust/ast/rust-ast-visitor.h b/gcc/rust/ast/rust-ast-visitor.h index e0de54d7a98..30e156facbb 100644 --- a/gcc/rust/ast/rust-ast-visitor.h +++ b/gcc/rust/ast/rust-ast-visitor.h @@ -93,7 +93,6 @@ public: virtual void visit (StructExprFieldIndexValue &field) = 0; virtual void visit (StructExprStructFields &expr) = 0; virtual void visit (StructExprStructBase &expr) = 0; - virtual void visit (StructExprTuple &expr) = 0; virtual void visit (StructExprUnit &expr) = 0; // virtual void visit(EnumExprField& field) = 0; virtual void visit (EnumExprFieldIdentifier &field) = 0; diff --git a/gcc/rust/ast/rust-expr.h b/gcc/rust/ast/rust-expr.h index 88e45fef330..effdb230319 100644 --- a/gcc/rust/ast/rust-expr.h +++ b/gcc/rust/ast/rust-expr.h @@ -1852,75 +1852,6 @@ protected: } }; -// AST node of a tuple struct creator -class StructExprTuple : public StructExpr -{ - std::vector inner_attrs; - std::vector > exprs; - - Location locus; - -public: - std::string as_string () const override; - - const std::vector &get_inner_attrs () const { return inner_attrs; } - std::vector &get_inner_attrs () { return inner_attrs; } - - StructExprTuple (PathInExpression struct_path, - std::vector > tuple_exprs, - std::vector inner_attribs, - std::vector outer_attribs, Location locus) - : StructExpr (std::move (struct_path), std::move (outer_attribs)), - inner_attrs (std::move (inner_attribs)), exprs (std::move (tuple_exprs)), - locus (locus) - {} - - // copy constructor with vector clone - StructExprTuple (StructExprTuple const &other) - : StructExpr (other), inner_attrs (other.inner_attrs), locus (other.locus) - { - exprs.reserve (other.exprs.size ()); - for (const auto &e : other.exprs) - exprs.push_back (e->clone_expr ()); - } - - // overloaded assignment operator with vector clone - StructExprTuple &operator= (StructExprTuple const &other) - { - StructExpr::operator= (other); - inner_attrs = other.inner_attrs; - locus = other.locus; - - exprs.reserve (other.exprs.size ()); - for (const auto &e : other.exprs) - exprs.push_back (e->clone_expr ()); - - return *this; - } - - // move constructors - StructExprTuple (StructExprTuple &&other) = default; - StructExprTuple &operator= (StructExprTuple &&other) = default; - - Location get_locus () const override final { return locus; } - - void accept_vis (ASTVisitor &vis) override; - - const std::vector > &get_elems () const - { - return exprs; - } - std::vector > &get_elems () { return exprs; } - -protected: - /* Use covariance to implement clone function as returning this object rather - * than base */ - StructExprTuple *clone_expr_without_block_impl () const override - { - return new StructExprTuple (*this); - } -}; - // AST node of a "unit" struct creator (no fields and no braces) class StructExprUnit : public StructExpr { diff --git a/gcc/rust/backend/rust-compile-base.h b/gcc/rust/backend/rust-compile-base.h index 3daad5ffaaf..d7cc009133b 100644 --- a/gcc/rust/backend/rust-compile-base.h +++ b/gcc/rust/backend/rust-compile-base.h @@ -72,7 +72,6 @@ public: virtual void visit (HIR::StructExprFieldIndexValue &field) {} virtual void visit (HIR::StructExprStructFields &expr) {} virtual void visit (HIR::StructExprStructBase &expr) {} - virtual void visit (HIR::StructExprTuple &expr) {} virtual void visit (HIR::StructExprUnit &expr) {} // virtual void visit(EnumExprField& field) {} virtual void visit (HIR::EnumExprFieldIdentifier &field) {} diff --git a/gcc/rust/expand/rust-macro-expand.cc b/gcc/rust/expand/rust-macro-expand.cc index e4855e0144c..060d41ad04c 100644 --- a/gcc/rust/expand/rust-macro-expand.cc +++ b/gcc/rust/expand/rust-macro-expand.cc @@ -939,36 +939,6 @@ public: "cannot strip expression in this position - outer " "attributes not allowed"); } - void visit (AST::StructExprTuple &expr) override - { - // initial strip test based on outer attrs - expander.expand_cfg_attrs (expr.get_outer_attrs ()); - if (expander.fails_cfg_with_expand (expr.get_outer_attrs ())) - { - expr.mark_for_strip (); - return; - } - - /* strip test based on inner attrs - spec says these are inner - * attributes, not outer attributes of inner expr */ - expander.expand_cfg_attrs (expr.get_inner_attrs ()); - if (expander.fails_cfg_with_expand (expr.get_inner_attrs ())) - { - expr.mark_for_strip (); - return; - } - - // strip sub-exprs of path - auto &struct_name = expr.get_struct_name (); - visit (struct_name); - if (struct_name.is_marked_for_strip ()) - rust_error_at (struct_name.get_locus (), - "cannot strip path in this position"); - - /* spec says outer attributes are specifically allowed for elements - * of tuple-style struct expressions, so full stripping possible */ - expand_pointer_allow_strip (expr.get_elems ()); - } void visit (AST::StructExprUnit &expr) override { // initial strip test based on outer attrs diff --git a/gcc/rust/hir/rust-ast-lower-base.h b/gcc/rust/hir/rust-ast-lower-base.h index 07489f86e23..e4303f2942c 100644 --- a/gcc/rust/hir/rust-ast-lower-base.h +++ b/gcc/rust/hir/rust-ast-lower-base.h @@ -96,7 +96,6 @@ public: virtual void visit (AST::StructExprFieldIndexValue &field) {} virtual void visit (AST::StructExprStructFields &expr) {} virtual void visit (AST::StructExprStructBase &expr) {} - virtual void visit (AST::StructExprTuple &expr) {} virtual void visit (AST::StructExprUnit &expr) {} // virtual void visit(EnumExprField& field) {} virtual void visit (AST::EnumExprFieldIdentifier &field) {} diff --git a/gcc/rust/hir/tree/rust-hir-expr.h b/gcc/rust/hir/tree/rust-hir-expr.h index bb15d4f9901..d099455f9fb 100644 --- a/gcc/rust/hir/tree/rust-hir-expr.h +++ b/gcc/rust/hir/tree/rust-hir-expr.h @@ -1578,80 +1578,6 @@ protected: } }; -// HIR node of a tuple struct creator -class StructExprTuple : public StructExpr -{ - AST::AttrVec inner_attrs; - std::vector > exprs; - - Location locus; - -public: - std::string as_string () const override; - - const AST::AttrVec &get_inner_attrs () const { return inner_attrs; } - - /*inline std::vector> get_exprs() const { - return exprs; - }*/ - - StructExprTuple (Analysis::NodeMapping mappings, PathInExpression struct_path, - std::vector > tuple_exprs, - AST::AttrVec inner_attribs, AST::AttrVec outer_attribs, - Location locus) - : StructExpr (std::move (mappings), std::move (struct_path), - std::move (outer_attribs)), - inner_attrs (std::move (inner_attribs)), exprs (std::move (tuple_exprs)), - locus (locus) - {} - - // copy constructor with vector clone - StructExprTuple (StructExprTuple const &other) - : StructExpr (other), inner_attrs (other.inner_attrs), locus (other.locus) - { - exprs.reserve (other.exprs.size ()); - for (const auto &e : other.exprs) - exprs.push_back (e->clone_expr ()); - } - - // overloaded assignment operator with vector clone - StructExprTuple &operator= (StructExprTuple const &other) - { - StructExpr::operator= (other); - inner_attrs = other.inner_attrs; - locus = other.locus; - - exprs.reserve (other.exprs.size ()); - for (const auto &e : other.exprs) - exprs.push_back (e->clone_expr ()); - - return *this; - } - - // move constructors - StructExprTuple (StructExprTuple &&other) = default; - StructExprTuple &operator= (StructExprTuple &&other) = default; - - Location get_locus () const override final { return locus; } - - void accept_vis (HIRVisitor &vis) override; - -protected: - /* Use covariance to implement clone function as returning this object rather - * than base */ - StructExprTuple *clone_expr_impl () const override - { - return new StructExprTuple (*this); - } - - /* Use covariance to implement clone function as returning this object rather - * than base */ - StructExprTuple *clone_expr_without_block_impl () const override - { - return new StructExprTuple (*this); - } -}; - // HIR node of a "unit" struct creator (no fields and no braces) class StructExprUnit : public StructExpr { diff --git a/gcc/rust/hir/tree/rust-hir-full-decls.h b/gcc/rust/hir/tree/rust-hir-full-decls.h index 41ae398bcb8..11b82267333 100644 --- a/gcc/rust/hir/tree/rust-hir-full-decls.h +++ b/gcc/rust/hir/tree/rust-hir-full-decls.h @@ -90,7 +90,6 @@ class StructExprFieldIdentifierValue; class StructExprFieldIndexValue; class StructExprStructFields; class StructExprStructBase; -class StructExprTuple; class StructExprUnit; class EnumVariantExpr; class EnumExprField; diff --git a/gcc/rust/hir/tree/rust-hir-full-test.cc b/gcc/rust/hir/tree/rust-hir-full-test.cc index ecc282a57b2..67a193594de 100644 --- a/gcc/rust/hir/tree/rust-hir-full-test.cc +++ b/gcc/rust/hir/tree/rust-hir-full-test.cc @@ -2994,59 +2994,6 @@ StructExpr::as_string () const return str; } -std::string -StructExprTuple::as_string () const -{ - std::string str = StructExpr::as_string (); - - if (exprs.empty ()) - { - str += "()"; - } - else - { - auto i = exprs.begin (); - auto e = exprs.end (); - - // debug - null pointer check - if (*i == nullptr) - { - return "ERROR_MARK_STRING - nullptr struct expr tuple field"; - } - - str += '('; - for (; i != e; i++) - { - str += (*i)->as_string (); - if (e != i + 1) - str += ", "; - } - str += ')'; - } - - indent_spaces (enter); - indent_spaces (enter); - // inner attributes - str += "\n" + indent_spaces (stay) + "inner attributes:"; - if (inner_attrs.empty ()) - { - str += "none"; - } - else - { - /* note that this does not print them with "inner attribute" syntax - - * just the body */ - for (const auto &attr : inner_attrs) - { - str += "\n" + indent_spaces (stay) + attr.as_string (); - } - } - indent_spaces (out); - indent_spaces (out); - - return str; -} - std::string StructExprStruct::as_string () const { @@ -3983,12 +3930,6 @@ StructExprStructBase::accept_vis (HIRVisitor &vis) vis.visit (*this); } -void -StructExprTuple::accept_vis (HIRVisitor &vis) -{ - vis.visit (*this); -} - void StructExprUnit::accept_vis (HIRVisitor &vis) { diff --git a/gcc/rust/hir/tree/rust-hir-visitor.h b/gcc/rust/hir/tree/rust-hir-visitor.h index 637254349f3..dffd0d565bb 100644 --- a/gcc/rust/hir/tree/rust-hir-visitor.h +++ b/gcc/rust/hir/tree/rust-hir-visitor.h @@ -60,7 +60,6 @@ public: virtual void visit (StructExprFieldIndexValue &field) = 0; virtual void visit (StructExprStructFields &expr) = 0; virtual void visit (StructExprStructBase &expr) = 0; - virtual void visit (StructExprTuple &expr) = 0; virtual void visit (StructExprUnit &expr) = 0; virtual void visit (EnumExprFieldIdentifier &field) = 0; virtual void visit (EnumExprFieldIdentifierValue &field) = 0; diff --git a/gcc/rust/lint/rust-lint-marklive-base.h b/gcc/rust/lint/rust-lint-marklive-base.h index 229643fbd04..0354ad2e6f0 100644 --- a/gcc/rust/lint/rust-lint-marklive-base.h +++ b/gcc/rust/lint/rust-lint-marklive-base.h @@ -70,7 +70,6 @@ public: virtual void visit (HIR::StructExprFieldIndexValue &) override {} virtual void visit (HIR::StructExprStructFields &) override {} virtual void visit (HIR::StructExprStructBase &) override {} - virtual void visit (HIR::StructExprTuple &) override {} virtual void visit (HIR::StructExprUnit &) override {} virtual void visit (HIR::EnumExprFieldIdentifier &) override {} diff --git a/gcc/rust/resolve/rust-ast-resolve-base.h b/gcc/rust/resolve/rust-ast-resolve-base.h index 10e2b1bf6d5..42c938d4fcf 100644 --- a/gcc/rust/resolve/rust-ast-resolve-base.h +++ b/gcc/rust/resolve/rust-ast-resolve-base.h @@ -73,7 +73,6 @@ public: void visit (AST::StructExprFieldIndexValue &) {} void visit (AST::StructExprStructFields &) {} void visit (AST::StructExprStructBase &) {} - void visit (AST::StructExprTuple &) {} void visit (AST::StructExprUnit &) {} void visit (AST::EnumExprFieldIdentifier &) {} void visit (AST::EnumExprFieldIdentifierValue &) {} diff --git a/gcc/rust/typecheck/rust-hir-const-fold-base.h b/gcc/rust/typecheck/rust-hir-const-fold-base.h index 1829b85f125..7a6d6c5c207 100644 --- a/gcc/rust/typecheck/rust-hir-const-fold-base.h +++ b/gcc/rust/typecheck/rust-hir-const-fold-base.h @@ -73,7 +73,6 @@ public: virtual void visit (HIR::StructExprFieldIndexValue &) override {} virtual void visit (HIR::StructExprStructFields &) override {} virtual void visit (HIR::StructExprStructBase &) override {} - virtual void visit (HIR::StructExprTuple &) override {} virtual void visit (HIR::StructExprUnit &) override {} virtual void visit (HIR::EnumExprFieldIdentifier &) override {} diff --git a/gcc/rust/typecheck/rust-hir-type-check-base.h b/gcc/rust/typecheck/rust-hir-type-check-base.h index 30508149852..162df2d5959 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-base.h +++ b/gcc/rust/typecheck/rust-hir-type-check-base.h @@ -74,7 +74,6 @@ public: virtual void visit (HIR::StructExprFieldIndexValue &) override {} virtual void visit (HIR::StructExprStructFields &) override {} virtual void visit (HIR::StructExprStructBase &) override {} - virtual void visit (HIR::StructExprTuple &) override {} virtual void visit (HIR::StructExprUnit &) override {} virtual void visit (HIR::EnumExprFieldIdentifier &) override {} diff --git a/gcc/rust/typecheck/rust-hir-type-check-util.h b/gcc/rust/typecheck/rust-hir-type-check-util.h index 8146c6eaa70..a2f1a43a8fd 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-util.h +++ b/gcc/rust/typecheck/rust-hir-type-check-util.h @@ -68,7 +68,6 @@ public: virtual void visit (HIR::StructExprFieldIndexValue &) override {} virtual void visit (HIR::StructExprStructFields &) override {} virtual void visit (HIR::StructExprStructBase &) override {} - virtual void visit (HIR::StructExprTuple &) override {} virtual void visit (HIR::StructExprUnit &) override {} virtual void visit (HIR::EnumExprFieldIdentifier &) override {} -- 2.32.0