public inbox for gcc-rust@gcc.gnu.org
 help / color / mirror / Atom feed
From: Mark Wielaard <mark@klomp.org>
To: gcc-rust@gcc.gnu.org
Cc: Mark Wielaard <mark@klomp.org>
Subject: [PATCH 1/3] StructExprTuple doesn't really exist
Date: Wed,  1 Sep 2021 02:15:40 +0200	[thread overview]
Message-ID: <20210901001542.160965-2-mark@klomp.org> (raw)
In-Reply-To: <20210901001542.160965-1-mark@klomp.org>

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<Attribute> inner_attrs;
-  std::vector<std::unique_ptr<Expr> > exprs;
-
-  Location locus;
-
-public:
-  std::string as_string () const override;
-
-  const std::vector<Attribute> &get_inner_attrs () const { return inner_attrs; }
-  std::vector<Attribute> &get_inner_attrs () { return inner_attrs; }
-
-  StructExprTuple (PathInExpression struct_path,
-		   std::vector<std::unique_ptr<Expr> > tuple_exprs,
-		   std::vector<Attribute> inner_attribs,
-		   std::vector<Attribute> 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<std::unique_ptr<Expr> > &get_elems () const
-  {
-    return exprs;
-  }
-  std::vector<std::unique_ptr<Expr> > &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<std::unique_ptr<Expr> > exprs;
-
-  Location locus;
-
-public:
-  std::string as_string () const override;
-
-  const AST::AttrVec &get_inner_attrs () const { return inner_attrs; }
-
-  /*inline std::vector<std::unique_ptr<Expr>> get_exprs() const {
-      return exprs;
-  }*/
-
-  StructExprTuple (Analysis::NodeMapping mappings, PathInExpression struct_path,
-		   std::vector<std::unique_ptr<Expr> > 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


  reply	other threads:[~2021-09-01  0:16 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-01  0:15 Cleanup some StructExpr related classes Mark Wielaard
2021-09-01  0:15 ` Mark Wielaard [this message]
2021-09-01  0:15 ` [PATCH 2/3] StructExprUnit doesn't really exist Mark Wielaard
2021-09-01  0:15 ` [PATCH 3/3] Remove Enumaration Expression, EnumExpr, classes Mark Wielaard
2021-09-01 10:11 ` Cleanup some StructExpr related classes Philip Herron
2021-09-01 19:23   ` Mark Wielaard
2021-09-02 13:23     ` Philip Herron
2021-09-05 22:47       ` Mark Wielaard
2021-09-06 16:55         ` Philip Herron

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210901001542.160965-2-mark@klomp.org \
    --to=mark@klomp.org \
    --cc=gcc-rust@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).