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 2/2] Remove has_shebang flag from AST and HIR Crate classes
Date: Mon,  5 Jul 2021 00:09:59 +0200	[thread overview]
Message-ID: <20210704220959.85580-3-mark@klomp.org> (raw)
In-Reply-To: <20210704220959.85580-1-mark@klomp.org>

The lexer deals with the shebang and the parser cannot detect whether
there is or isn't a shebang line. The flag isn't relevant or useful in
the AST and HIR Crate classes.
---
 gcc/rust/ast/rust-ast-full-test.cc      |  5 +----
 gcc/rust/ast/rust-ast.h                 | 13 +++++--------
 gcc/rust/hir/rust-ast-lower.cc          |  3 +--
 gcc/rust/hir/tree/rust-hir-full-test.cc |  6 +-----
 gcc/rust/hir/tree/rust-hir.h            | 14 +++++---------
 gcc/rust/parse/rust-parse-impl.h        | 12 +++++-------
 6 files changed, 18 insertions(+), 35 deletions(-)

diff --git a/gcc/rust/ast/rust-ast-full-test.cc b/gcc/rust/ast/rust-ast-full-test.cc
index 3d339ad1aed..12ef255bcbf 100644
--- a/gcc/rust/ast/rust-ast-full-test.cc
+++ b/gcc/rust/ast/rust-ast-full-test.cc
@@ -172,13 +172,10 @@ Crate::as_string () const
   rust_debug ("beginning crate recursive as-string");
 
   std::string str ("Crate: ");
-  // add utf8bom and shebang
+  // add utf8bom
   if (has_utf8bom)
     str += "\n has utf8bom";
 
-  if (has_shebang)
-    str += "\n has shebang";
-
   // inner attributes
   str += append_attributes (inner_attrs, INNER);
 
diff --git a/gcc/rust/ast/rust-ast.h b/gcc/rust/ast/rust-ast.h
index 0e25de2be5c..ce55e1beb5e 100644
--- a/gcc/rust/ast/rust-ast.h
+++ b/gcc/rust/ast/rust-ast.h
@@ -1551,7 +1551,6 @@ protected:
 struct Crate
 {
   bool has_utf8bom;
-  bool has_shebang;
 
   std::vector<Attribute> inner_attrs;
   // dodgy spacing required here
@@ -1564,17 +1563,16 @@ struct Crate
 public:
   // Constructor
   Crate (std::vector<std::unique_ptr<Item> > items,
-	 std::vector<Attribute> inner_attrs, bool has_utf8bom = false,
-	 bool has_shebang = false)
-    : has_utf8bom (has_utf8bom), has_shebang (has_shebang),
-      inner_attrs (std::move (inner_attrs)), items (std::move (items)),
+	 std::vector<Attribute> inner_attrs, bool has_utf8bom = false)
+    : has_utf8bom (has_utf8bom), inner_attrs (std::move (inner_attrs)),
+      items (std::move (items)),
       node_id (Analysis::Mappings::get ()->get_next_node_id ())
   {}
 
   // Copy constructor with vector clone
   Crate (Crate const &other)
-    : has_utf8bom (other.has_utf8bom), has_shebang (other.has_shebang),
-      inner_attrs (other.inner_attrs), node_id (other.node_id)
+    : has_utf8bom (other.has_utf8bom), inner_attrs (other.inner_attrs),
+      node_id (other.node_id)
   {
     items.reserve (other.items.size ());
     for (const auto &e : other.items)
@@ -1587,7 +1585,6 @@ public:
   Crate &operator= (Crate const &other)
   {
     inner_attrs = other.inner_attrs;
-    has_shebang = other.has_shebang;
     has_utf8bom = other.has_utf8bom;
     node_id = other.node_id;
 
diff --git a/gcc/rust/hir/rust-ast-lower.cc b/gcc/rust/hir/rust-ast-lower.cc
index c7222e2e998..0f3c86dc7bf 100644
--- a/gcc/rust/hir/rust-ast-lower.cc
+++ b/gcc/rust/hir/rust-ast-lower.cc
@@ -41,7 +41,6 @@ ASTLowering::go ()
 {
   std::vector<std::unique_ptr<HIR::Item> > items;
   bool has_utf8bom = false;
-  bool has_shebang = false;
 
   for (auto it = astCrate.items.begin (); it != astCrate.items.end (); it++)
     {
@@ -57,7 +56,7 @@ ASTLowering::go ()
 				 UNKNOWN_LOCAL_DEFID);
 
   return HIR::Crate (std::move (items), astCrate.get_inner_attrs (), mapping,
-		     has_utf8bom, has_shebang);
+		     has_utf8bom);
 }
 
 // rust-ast-lower-block.h
diff --git a/gcc/rust/hir/tree/rust-hir-full-test.cc b/gcc/rust/hir/tree/rust-hir-full-test.cc
index 261b3af672a..051ba8736ad 100644
--- a/gcc/rust/hir/tree/rust-hir-full-test.cc
+++ b/gcc/rust/hir/tree/rust-hir-full-test.cc
@@ -73,15 +73,11 @@ std::string
 Crate::as_string () const
 {
   std::string str ("HIR::Crate: ");
-  // add utf8bom and shebang
+  // add utf8bom
   if (has_utf8bom)
     {
       str += "\n has utf8bom";
     }
-  if (has_shebang)
-    {
-      str += "\n has shebang";
-    }
 
   // inner attributes
   str += "\n inner attributes: ";
diff --git a/gcc/rust/hir/tree/rust-hir.h b/gcc/rust/hir/tree/rust-hir.h
index 35dc71ae1df..f918f2dc106 100644
--- a/gcc/rust/hir/tree/rust-hir.h
+++ b/gcc/rust/hir/tree/rust-hir.h
@@ -679,7 +679,6 @@ public:
 struct Crate
 {
   bool has_utf8bom;
-  bool has_shebang;
 
   AST::AttrVec inner_attrs;
   // dodgy spacing required here
@@ -692,17 +691,15 @@ struct Crate
 public:
   // Constructor
   Crate (std::vector<std::unique_ptr<Item> > items, AST::AttrVec inner_attrs,
-	 Analysis::NodeMapping mappings, bool has_utf8bom = false,
-	 bool has_shebang = false)
-    : has_utf8bom (has_utf8bom), has_shebang (has_shebang),
-      inner_attrs (std::move (inner_attrs)), items (std::move (items)),
-      mappings (mappings)
+	 Analysis::NodeMapping mappings, bool has_utf8bom = false)
+    : has_utf8bom (has_utf8bom), inner_attrs (std::move (inner_attrs)),
+      items (std::move (items)), mappings (mappings)
   {}
 
   // Copy constructor with vector clone
   Crate (Crate const &other)
-    : has_utf8bom (other.has_utf8bom), has_shebang (other.has_shebang),
-      inner_attrs (other.inner_attrs), mappings (other.mappings)
+    : has_utf8bom (other.has_utf8bom), inner_attrs (other.inner_attrs),
+      mappings (other.mappings)
   {
     items.reserve (other.items.size ());
     for (const auto &e : other.items)
@@ -715,7 +712,6 @@ public:
   Crate &operator= (Crate const &other)
   {
     inner_attrs = other.inner_attrs;
-    has_shebang = other.has_shebang;
     has_utf8bom = other.has_utf8bom;
     mappings = other.mappings;
 
diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h
index 9f8282b3639..136b34371f1 100644
--- a/gcc/rust/parse/rust-parse-impl.h
+++ b/gcc/rust/parse/rust-parse-impl.h
@@ -393,12 +393,11 @@ template <typename ManagedTokenSource>
 AST::Crate
 Parser<ManagedTokenSource>::parse_crate ()
 {
-  /* TODO: determine if has utf8bom and shebang. Currently, they are eliminated
-   * by the lexing phase. Neither are useful for the compiler anyway, so maybe a
+  /* TODO: determine if has utf8bom. Currently, is eliminated
+   * by the lexing phase. Not useful for the compiler anyway, so maybe a
    * better idea would be to eliminate
-   * the has_utf8bom and has_shebang variables from the crate data structure. */
+   * the has_utf8bom variable from the crate data structure. */
   bool has_utf8bom = false;
-  bool has_shebang = false;
 
   // parse inner attributes
   AST::AttrVec inner_attrs = parse_inner_attributes ();
@@ -430,8 +429,7 @@ Parser<ManagedTokenSource>::parse_crate ()
   for (const auto &error : error_table)
     error.emit_error ();
 
-  return AST::Crate (std::move (items), std::move (inner_attrs), has_utf8bom,
-		     has_shebang);
+  return AST::Crate (std::move (items), std::move (inner_attrs), has_utf8bom);
 }
 
 // Parse a contiguous block of inner attributes.
@@ -484,7 +482,7 @@ Parser<ManagedTokenSource>::parse_inner_attribute ()
   if (lexer.peek_token ()->get_id () != EXCLAM)
     {
       Error error (lexer.peek_token ()->get_locus (),
-		   "expected %<!%> or %<[%> for inner attribute or shebang");
+		   "expected %<!%> or %<[%> for inner attribute");
       add_error (std::move (error));
 
       return AST::Attribute::create_empty ();
-- 
2.32.0


  parent reply	other threads:[~2021-07-04 22:10 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-04 22:09 shebang handling Mark Wielaard
2021-07-04 22:09 ` [PATCH 1/2] Handle shebang line, plus any whitespace and comment skipping in lexer Mark Wielaard
2021-07-04 22:09 ` Mark Wielaard [this message]
2021-07-05  5:46 ` shebang handling Marc

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=20210704220959.85580-3-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).