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 D3BD83858D3C for ; Wed, 1 Sep 2021 00:16:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D3BD83858D3C 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 A7F9E314B963; Wed, 1 Sep 2021 02:16:36 +0200 (CEST) Received: by reform (Postfix, from userid 1000) id 7B6A22E81023; Wed, 1 Sep 2021 02:16:36 +0200 (CEST) From: Mark Wielaard To: gcc-rust@gcc.gnu.org Cc: Mark Wielaard Subject: [PATCH 2/3] StructExprUnit doesn't really exist Date: Wed, 1 Sep 2021 02:15:41 +0200 Message-Id: <20210901001542.160965-3-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:54 -0000 A StructExprUnit is parsed as an IdentifierExpr. An IdentifierExpr, which is what we call a single segment PathInExpression. After type checking, when generating gcc generic trees, if the IdentifierExpr is a type reference (which must be a unit struct), then a unit expression is generated. Remove the AST and HIR StructExprUnit classes which are never used. --- gcc/rust/ast/rust-ast-full-decls.h | 1 - gcc/rust/ast/rust-ast-full-test.cc | 6 ---- gcc/rust/ast/rust-ast-visitor.h | 1 - gcc/rust/ast/rust-expr.h | 30 ---------------- gcc/rust/backend/rust-compile-base.h | 1 - gcc/rust/expand/rust-macro-expand.cc | 17 --------- gcc/rust/hir/rust-ast-lower-base.h | 1 - gcc/rust/hir/tree/rust-hir-expr.h | 35 ------------------- gcc/rust/hir/tree/rust-hir-full-decls.h | 1 - gcc/rust/hir/tree/rust-hir-full-test.cc | 6 ---- 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, 105 deletions(-) diff --git a/gcc/rust/ast/rust-ast-full-decls.h b/gcc/rust/ast/rust-ast-full-decls.h index 205da881ed4..09f879c312f 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 StructExprUnit; class EnumVariantExpr; class EnumExprField; class EnumExprFieldIdentifier; diff --git a/gcc/rust/ast/rust-ast-full-test.cc b/gcc/rust/ast/rust-ast-full-test.cc index 1a447ae0198..8ffc1b20e70 100644 --- a/gcc/rust/ast/rust-ast-full-test.cc +++ b/gcc/rust/ast/rust-ast-full-test.cc @@ -5184,12 +5184,6 @@ StructExprStructBase::accept_vis (ASTVisitor &vis) vis.visit (*this); } -void -StructExprUnit::accept_vis (ASTVisitor &vis) -{ - vis.visit (*this); -} - void EnumExprFieldIdentifier::accept_vis (ASTVisitor &vis) { diff --git a/gcc/rust/ast/rust-ast-visitor.h b/gcc/rust/ast/rust-ast-visitor.h index 30e156facbb..ffd1d2d3161 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 (StructExprUnit &expr) = 0; // virtual void visit(EnumExprField& field) = 0; virtual void visit (EnumExprFieldIdentifier &field) = 0; virtual void visit (EnumExprFieldIdentifierValue &field) = 0; diff --git a/gcc/rust/ast/rust-expr.h b/gcc/rust/ast/rust-expr.h index effdb230319..a6882c75e82 100644 --- a/gcc/rust/ast/rust-expr.h +++ b/gcc/rust/ast/rust-expr.h @@ -1852,36 +1852,6 @@ protected: } }; -// AST node of a "unit" struct creator (no fields and no braces) -class StructExprUnit : public StructExpr -{ - Location locus; - -public: - std::string as_string () const override - { - return get_struct_name ().as_string (); - } - - StructExprUnit (PathInExpression struct_path, - std::vector outer_attribs, Location locus) - : StructExpr (std::move (struct_path), std::move (outer_attribs)), - locus (locus) - {} - - Location get_locus () const override final { return locus; } - - void accept_vis (ASTVisitor &vis) override; - -protected: - /* Use covariance to implement clone function as returning this object rather - * than base */ - StructExprUnit *clone_expr_without_block_impl () const override - { - return new StructExprUnit (*this); - } -}; - // aka EnumerationVariantExpr // Base AST node representing creation of an enum variant instance - abstract class EnumVariantExpr : public ExprWithoutBlock diff --git a/gcc/rust/backend/rust-compile-base.h b/gcc/rust/backend/rust-compile-base.h index d7cc009133b..2ce7369ecde 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::StructExprUnit &expr) {} // virtual void visit(EnumExprField& field) {} virtual void visit (HIR::EnumExprFieldIdentifier &field) {} virtual void visit (HIR::EnumExprFieldIdentifierValue &field) {} diff --git a/gcc/rust/expand/rust-macro-expand.cc b/gcc/rust/expand/rust-macro-expand.cc index 060d41ad04c..65b2ea06039 100644 --- a/gcc/rust/expand/rust-macro-expand.cc +++ b/gcc/rust/expand/rust-macro-expand.cc @@ -939,23 +939,6 @@ public: "cannot strip expression in this position - outer " "attributes not allowed"); } - void visit (AST::StructExprUnit &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 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"); - } void visit (AST::EnumExprFieldIdentifier &) override { // as no attrs (at moment, at least), no stripping possible diff --git a/gcc/rust/hir/rust-ast-lower-base.h b/gcc/rust/hir/rust-ast-lower-base.h index e4303f2942c..8debf3967b1 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::StructExprUnit &expr) {} // virtual void visit(EnumExprField& field) {} virtual void visit (AST::EnumExprFieldIdentifier &field) {} virtual void visit (AST::EnumExprFieldIdentifierValue &field) {} diff --git a/gcc/rust/hir/tree/rust-hir-expr.h b/gcc/rust/hir/tree/rust-hir-expr.h index d099455f9fb..b8cb7547665 100644 --- a/gcc/rust/hir/tree/rust-hir-expr.h +++ b/gcc/rust/hir/tree/rust-hir-expr.h @@ -1578,41 +1578,6 @@ protected: } }; -// HIR node of a "unit" struct creator (no fields and no braces) -class StructExprUnit : public StructExpr -{ - Location locus; - -public: - std::string as_string () const override { return struct_name.as_string (); } - - StructExprUnit (Analysis::NodeMapping mappings, PathInExpression struct_path, - AST::AttrVec outer_attribs, Location locus) - : StructExpr (std::move (mappings), std::move (struct_path), - std::move (outer_attribs)), - locus (locus) - {} - - 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 */ - StructExprUnit *clone_expr_impl () const override - { - return new StructExprUnit (*this); - } - - /* Use covariance to implement clone function as returning this object rather - * than base */ - StructExprUnit *clone_expr_without_block_impl () const override - { - return new StructExprUnit (*this); - } -}; - // aka EnumerationVariantExpr // Base HIR node representing creation of an enum variant instance - abstract class EnumVariantExpr : public ExprWithoutBlock diff --git a/gcc/rust/hir/tree/rust-hir-full-decls.h b/gcc/rust/hir/tree/rust-hir-full-decls.h index 11b82267333..b72678a4f40 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 StructExprUnit; class EnumVariantExpr; class EnumExprField; class EnumExprFieldIdentifier; diff --git a/gcc/rust/hir/tree/rust-hir-full-test.cc b/gcc/rust/hir/tree/rust-hir-full-test.cc index 67a193594de..eda5eaf2c0b 100644 --- a/gcc/rust/hir/tree/rust-hir-full-test.cc +++ b/gcc/rust/hir/tree/rust-hir-full-test.cc @@ -3930,12 +3930,6 @@ StructExprStructBase::accept_vis (HIRVisitor &vis) vis.visit (*this); } -void -StructExprUnit::accept_vis (HIRVisitor &vis) -{ - vis.visit (*this); -} - void EnumExprFieldIdentifier::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 dffd0d565bb..be9bd37b13d 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 (StructExprUnit &expr) = 0; virtual void visit (EnumExprFieldIdentifier &field) = 0; virtual void visit (EnumExprFieldIdentifierValue &field) = 0; virtual void visit (EnumExprFieldIndexValue &field) = 0; diff --git a/gcc/rust/lint/rust-lint-marklive-base.h b/gcc/rust/lint/rust-lint-marklive-base.h index 0354ad2e6f0..86dab263e2a 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::StructExprUnit &) override {} virtual void visit (HIR::EnumExprFieldIdentifier &) override {} virtual void visit (HIR::EnumExprFieldIdentifierValue &) override {} diff --git a/gcc/rust/resolve/rust-ast-resolve-base.h b/gcc/rust/resolve/rust-ast-resolve-base.h index 42c938d4fcf..a3aeaba641c 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::StructExprUnit &) {} void visit (AST::EnumExprFieldIdentifier &) {} void visit (AST::EnumExprFieldIdentifierValue &) {} void visit (AST::EnumExprFieldIndexValue &) {} diff --git a/gcc/rust/typecheck/rust-hir-const-fold-base.h b/gcc/rust/typecheck/rust-hir-const-fold-base.h index 7a6d6c5c207..a8f2423348c 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::StructExprUnit &) override {} virtual void visit (HIR::EnumExprFieldIdentifier &) override {} virtual void visit (HIR::EnumExprFieldIdentifierValue &) override {} diff --git a/gcc/rust/typecheck/rust-hir-type-check-base.h b/gcc/rust/typecheck/rust-hir-type-check-base.h index 162df2d5959..178d78d168a 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::StructExprUnit &) override {} virtual void visit (HIR::EnumExprFieldIdentifier &) override {} virtual void visit (HIR::EnumExprFieldIdentifierValue &) override {} diff --git a/gcc/rust/typecheck/rust-hir-type-check-util.h b/gcc/rust/typecheck/rust-hir-type-check-util.h index a2f1a43a8fd..e9f2ff4d51c 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::StructExprUnit &) override {} virtual void visit (HIR::EnumExprFieldIdentifier &) override {} virtual void visit (HIR::EnumExprFieldIdentifierValue &) override {} -- 2.32.0