]> gcc.gnu.org Git - gcc.git/commitdiff
hir: Merge both module classes in one
authorCohenArthur <arthur.cohen@epita.fr>
Sat, 21 Aug 2021 09:59:29 +0000 (11:59 +0200)
committerCohenArthur <arthur.cohen@epita.fr>
Sat, 21 Aug 2021 12:03:02 +0000 (14:03 +0200)
At this point in the pipeline, all modules are either internal and
contain items, or external and have been previously expanded in the
macro-expand phase. Thus, all HIR modules WILL contain their final set
of items

13 files changed:
gcc/rust/backend/rust-compile-base.h
gcc/rust/backend/rust-compile-item.h
gcc/rust/hir/rust-ast-lower-item.h
gcc/rust/hir/tree/rust-hir-full-decls.h
gcc/rust/hir/tree/rust-hir-full-test.cc
gcc/rust/hir/tree/rust-hir-item.h
gcc/rust/hir/tree/rust-hir-visitor.h
gcc/rust/lint/rust-lint-marklive-base.h
gcc/rust/typecheck/rust-hir-const-fold-base.h
gcc/rust/typecheck/rust-hir-type-check-base.h
gcc/rust/typecheck/rust-hir-type-check-item.h
gcc/rust/typecheck/rust-hir-type-check-toplevel.h
gcc/rust/typecheck/rust-hir-type-check-util.h

index 6a05c1cf42450d072c02b18579d4d1615642e197..3daad5ffaaf15b81a51f7e1382bd704c976ac740 100644 (file)
@@ -121,8 +121,7 @@ public:
   // virtual void visit(WhereClauseItem& item) {}
   virtual void visit (HIR::LifetimeWhereClauseItem &item) {}
   virtual void visit (HIR::TypeBoundWhereClauseItem &item) {}
-  virtual void visit (HIR::ModuleBodied &module) {}
-  virtual void visit (HIR::ModuleNoBody &module) {}
+  virtual void visit (HIR::Module &module) {}
   virtual void visit (HIR::ExternCrate &crate) {}
   // virtual void visit(UseTree& use_tree) {}
   virtual void visit (HIR::UseTreeGlob &use_tree) {}
index a12e67ecde41e3ca9cbae22fdf0829dadf81e3c3..af0bc4332f9c3dddbb67d6e62a669ef7215be108 100644 (file)
@@ -313,7 +313,7 @@ public:
       }
   }
 
-  void visit (HIR::ModuleBodied &module) override
+  void visit (HIR::Module &module) override
   {
     for (auto &item : module.get_items ())
       CompileItem::compile (item.get (), ctx, compile_fns);
index bcf83ee63b628bf2e563dc4e162493e4eeb30c80..7b7ff6f58c1894174c5f1e1b6f0b92997a577ebf 100644 (file)
@@ -78,10 +78,9 @@ public:
     AST::AttrVec outer_attrs;
 
     translated
-      = new HIR::ModuleBodied (mapping, module.get_name (), module.get_locus (),
-                              std::move (items), std::move (vis),
-                              std::move (inner_attrs),
-                              std::move (outer_attrs));
+      = new HIR::Module (mapping, module.get_name (), module.get_locus (),
+                        std::move (items), std::move (vis),
+                        std::move (inner_attrs), std::move (outer_attrs));
 
     mappings->insert_defid_mapping (mapping.get_defid (), translated);
     mappings->insert_hir_item (mapping.get_crate_num (), mapping.get_hirid (),
index 58a110e6359a909981bcd85d45ce6da6ab5036e5..41ae398bcb855dddd80e7ab627484160090deffb 100644 (file)
@@ -162,8 +162,6 @@ struct FunctionParam;
 struct Visibility;
 class VisItem;
 class Module;
-class ModuleBodied;
-class ModuleNoBody;
 class ExternCrate;
 class UseTree;
 class UseTreeGlob;
index 62262a29cfd5a6b227f3c4dee742aef208d4af5f..ecc282a57b2d9e0fa11b4200464585eb5fbe8255 100644 (file)
@@ -169,17 +169,9 @@ Item::as_string () const
 
 std::string
 Module::as_string () const
-{
-  std::string vis_item = VisItem::as_string ();
-
-  return vis_item + "mod " + module_name;
-}
-
-std::string
-ModuleBodied::as_string () const
 {
   // get module string for "[vis] mod [name]"
-  std::string str = Module::as_string ();
+  std::string str = VisItem::as_string () + "mod " + module_name;
 
   // inner attributes
   str += "\n inner attributes: ";
@@ -222,16 +214,6 @@ ModuleBodied::as_string () const
   return str + "\n";
 }
 
-std::string
-ModuleNoBody::as_string () const
-{
-  std::string str = Module::as_string ();
-
-  str += "\n no body (reference to external file)";
-
-  return str + "\n";
-}
-
 std::string
 StaticItem::as_string () const
 {
@@ -3794,7 +3776,7 @@ MaybeNamedParam::as_string () const
 /* Override that calls the function recursively on all items contained within
  * the module. */
 void
-ModuleBodied::add_crate_name (std::vector<std::string> &names) const
+Module::add_crate_name (std::vector<std::string> &names) const
 {
   /* TODO: test whether module has been 'cfg'-ed out to determine whether to
    * exclude it from search */
@@ -4266,13 +4248,7 @@ TypeBoundWhereClauseItem::accept_vis (HIRVisitor &vis)
 }
 
 void
-ModuleBodied::accept_vis (HIRVisitor &vis)
-{
-  vis.visit (*this);
-}
-
-void
-ModuleNoBody::accept_vis (HIRVisitor &vis)
+Module::accept_vis (HIRVisitor &vis)
 {
   vis.visit (*this);
 }
index 3ce13426f75f4316d7a4307550c62f1243e582a7..7a05f02067b3fc933d4b397f59700ecb72dafd9b 100644 (file)
@@ -644,26 +644,6 @@ class Module : public VisItem
 {
   Identifier module_name;
   Location locus;
-
-protected:
-  // Protected constructor
-  Module (Analysis::NodeMapping mappings, Identifier module_name,
-         Visibility visibility, Location locus,
-         AST::AttrVec outer_attrs = AST::AttrVec ())
-    : VisItem (std::move (mappings), std::move (visibility),
-              std::move (outer_attrs)),
-      module_name (module_name), locus (locus)
-  {}
-
-public:
-  std::string as_string () const override;
-
-  Location get_locus () const { return locus; }
-};
-
-// Module with a body, defined in file
-class ModuleBodied : public Module
-{
   // bool has_inner_attrs;
   AST::AttrVec inner_attrs;
   // bool has_items;
@@ -679,20 +659,20 @@ public:
   bool has_inner_attrs () const { return !inner_attrs.empty (); }
 
   // Full constructor
-  ModuleBodied (Analysis::NodeMapping mappings, Identifier name, Location locus,
-               std::vector<std::unique_ptr<Item> > items
-               = std::vector<std::unique_ptr<Item> > (),
-               Visibility visibility = Visibility::create_error (),
-               AST::AttrVec inner_attrs = AST::AttrVec (),
-               AST::AttrVec outer_attrs = AST::AttrVec ())
-    : Module (std::move (mappings), std::move (name), std::move (visibility),
-             locus, std::move (outer_attrs)),
+  Module (Analysis::NodeMapping mappings, Identifier module_name,
+         Location locus, std::vector<std::unique_ptr<Item> > items,
+         Visibility visibility = Visibility::create_error (),
+         AST::AttrVec inner_attrs = AST::AttrVec (),
+         AST::AttrVec outer_attrs = AST::AttrVec ())
+    : VisItem (std::move (mappings), std::move (visibility),
+              std::move (outer_attrs)),
+      module_name (module_name), locus (locus),
       inner_attrs (std::move (inner_attrs)), items (std::move (items))
   {}
 
   // Copy constructor with vector clone
-  ModuleBodied (ModuleBodied const &other)
-    : Module (other), inner_attrs (other.inner_attrs)
+  Module (Module const &other)
+    : VisItem (other), inner_attrs (other.inner_attrs)
   {
     items.reserve (other.items.size ());
     for (const auto &e : other.items)
@@ -700,9 +680,9 @@ public:
   }
 
   // Overloaded assignment operator with vector clone
-  ModuleBodied &operator= (ModuleBodied const &other)
+  Module &operator= (Module const &other)
   {
-    Module::operator= (other);
+    VisItem::operator= (other);
     inner_attrs = other.inner_attrs;
 
     items.reserve (other.items.size ());
@@ -713,8 +693,8 @@ public:
   }
 
   // move constructors
-  ModuleBodied (ModuleBodied &&other) = default;
-  ModuleBodied &operator= (ModuleBodied &&other) = default;
+  Module (Module &&other) = default;
+  Module &operator= (Module &&other) = default;
 
   void accept_vis (HIRVisitor &vis) override;
 
@@ -724,48 +704,17 @@ public:
    * the module. */
   void add_crate_name (std::vector<std::string> &names) const override;
 
-protected:
-  /* Use covariance to implement clone function as returning this object
-   * rather than base */
-  ModuleBodied *clone_item_impl () const override
-  {
-    return new ModuleBodied (*this);
-  }
-
-  /* Use covariance to implement clone function as returning this object
-   * rather than base */
-  /*virtual ModuleBodied* clone_statement_impl() const override {
-      return new ModuleBodied(*this);
-  }*/
-};
-
-// Module without a body, loaded from external file
-class ModuleNoBody : public Module
-{
-public:
-  std::string as_string () const override;
-
-  // Full constructor
-  ModuleNoBody (Analysis::NodeMapping mappings, Identifier name,
-               Visibility visibility, AST::AttrVec outer_attrs, Location locus)
-    : Module (std::move (mappings), std::move (name), std::move (visibility),
-             locus, std::move (outer_attrs))
-  {}
-
-  void accept_vis (HIRVisitor &vis) override;
+  Location get_locus () const { return locus; }
 
 protected:
   /* Use covariance to implement clone function as returning this object
    * rather than base */
-  ModuleNoBody *clone_item_impl () const override
-  {
-    return new ModuleNoBody (*this);
-  }
+  Module *clone_item_impl () const override { return new Module (*this); }
 
   /* Use covariance to implement clone function as returning this object
    * rather than base */
-  /*virtual ModuleNoBody* clone_statement_impl() const override {
-      return new ModuleNoBody(*this);
+  /*virtual Module* clone_statement_impl() const override {
+      return new Module(*this);
   }*/
 };
 
index 8204a4196fd095dc781562846afc08e02ea7767c..637254349f38998c717d6853c8bf60c9758b5aba 100644 (file)
@@ -102,8 +102,7 @@ public:
   virtual void visit (TypeParam &param) = 0;
   virtual void visit (LifetimeWhereClauseItem &item) = 0;
   virtual void visit (TypeBoundWhereClauseItem &item) = 0;
-  virtual void visit (ModuleBodied &module) = 0;
-  virtual void visit (ModuleNoBody &module) = 0;
+  virtual void visit (Module &module) = 0;
   virtual void visit (ExternCrate &crate) = 0;
   virtual void visit (UseTreeGlob &use_tree) = 0;
   virtual void visit (UseTreeList &use_tree) = 0;
index 661dfe9e5e8d0b56659f883e3e70f2ba08ec78f7..229643fbd04419c8109c49b68908fe21738eb905 100644 (file)
@@ -117,8 +117,7 @@ public:
 
   virtual void visit (HIR::LifetimeWhereClauseItem &) override {}
   virtual void visit (HIR::TypeBoundWhereClauseItem &) override {}
-  virtual void visit (HIR::ModuleBodied &) override {}
-  virtual void visit (HIR::ModuleNoBody &) override {}
+  virtual void visit (HIR::Module &) override {}
   virtual void visit (HIR::ExternCrate &) override {}
 
   virtual void visit (HIR::UseTreeGlob &) override {}
index 5a59e706ec42b64bc8b7b4bf3fe835f6c04fa531..1829b85f125969d3c1321a4cf96eeaa6fb5a1136 100644 (file)
@@ -120,8 +120,7 @@ public:
 
   virtual void visit (HIR::LifetimeWhereClauseItem &) override {}
   virtual void visit (HIR::TypeBoundWhereClauseItem &) override {}
-  virtual void visit (HIR::ModuleBodied &) override {}
-  virtual void visit (HIR::ModuleNoBody &) override {}
+  virtual void visit (HIR::Module &) override {}
   virtual void visit (HIR::ExternCrate &) override {}
 
   virtual void visit (HIR::UseTreeGlob &) override {}
index 3dd0a1992575374222df7d474357b8456eb56071..305081498520052997d25a3a44c29849d90712e8 100644 (file)
@@ -121,8 +121,7 @@ public:
 
   virtual void visit (HIR::LifetimeWhereClauseItem &) override {}
   virtual void visit (HIR::TypeBoundWhereClauseItem &) override {}
-  virtual void visit (HIR::ModuleBodied &) override {}
-  virtual void visit (HIR::ModuleNoBody &) override {}
+  virtual void visit (HIR::Module &) override {}
   virtual void visit (HIR::ExternCrate &) override {}
 
   virtual void visit (HIR::UseTreeGlob &) override {}
index 72da26dffaaa6cba9a9da1b18a6451aa2ae91dd0..ab32f57a36132c229bce3f9e70c5c80cc9fe8fd7 100644 (file)
@@ -169,7 +169,7 @@ public:
       expected_ret_tyty->unify (block_expr_ty);
   }
 
-  void visit (HIR::ModuleBodied &module) override
+  void visit (HIR::Module &module) override
   {
     for (auto &item : module.get_items ())
       TypeCheckItem::Resolve (item.get ());
index aad5cb9ba84a190866160144fb59a3a9db1fd40b..5bffe137f9d18051885cebc46edc9455d2c52b3b 100644 (file)
@@ -101,7 +101,7 @@ public:
     context->insert_type (struct_decl.get_mappings (), type);
   }
 
-  void visit (HIR::ModuleBodied &module) override
+  void visit (HIR::Module &module) override
   {
     for (auto &item : module.get_items ())
       TypeCheckTopLevel::Resolve (item.get ());
index 0ba07a189f751498e8c8864a44b4ddf78a67e0dc..8146c6eaa70e1465c5ccfb971ae62e752047eda7 100644 (file)
@@ -115,8 +115,7 @@ public:
 
   virtual void visit (HIR::LifetimeWhereClauseItem &) override {}
   virtual void visit (HIR::TypeBoundWhereClauseItem &) override {}
-  virtual void visit (HIR::ModuleBodied &) override {}
-  virtual void visit (HIR::ModuleNoBody &) override {}
+  virtual void visit (HIR::Module &) override {}
   virtual void visit (HIR::ExternCrate &) override {}
 
   virtual void visit (HIR::UseTreeGlob &) override {}
This page took 0.090034 seconds and 5 git commands to generate.