]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: get rid of useless helper class and fix header usage
authorPhilip Herron <herron.philip@googlemail.com>
Thu, 1 Jun 2023 11:51:18 +0000 (12:51 +0100)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 16 Jan 2024 17:37:23 +0000 (18:37 +0100)
gcc/rust/ChangeLog:

* Make-lang.in: remove files
* backend/rust-compile-block.h: fix headers
* backend/rust-compile-expr.h: likewise
* backend/rust-compile-fnparam.h: likewise
* backend/rust-compile-item.h: likewise
* backend/rust-compile-pattern.h: likewise
* backend/rust-compile-resolve-path.h: likewise
* backend/rust-compile-stmt.h: likewise
* typecheck/rust-autoderef.cc: likewise
* typecheck/rust-hir-path-probe.cc: likewise
* typecheck/rust-hir-path-probe.h: likewise
* typecheck/rust-hir-trait-reference.h: likewise
* typecheck/rust-hir-trait-resolve.cc: use a for loop instead
* typecheck/rust-hir-trait-resolve.h: fix headers
* typecheck/rust-hir-type-check-expr.h: likewise
* typecheck/rust-hir-type-check-implitem.h: likewise
* typecheck/rust-hir-type-check-item.h: likewise
* typecheck/rust-hir-type-check-path.cc: likewise
* typecheck/rust-hir-type-check-pattern.h: likewise
* typecheck/rust-hir-type-check-stmt.h: likewise
* typecheck/rust-hir-type-check-type.h: likewise
* typecheck/rust-hir-type-check-util.cc: Removed.
* typecheck/rust-hir-type-check-util.h: Removed.

Signed-off-by: Philip Herron <herron.philip@googlemail.com>
23 files changed:
gcc/rust/Make-lang.in
gcc/rust/backend/rust-compile-block.h
gcc/rust/backend/rust-compile-expr.h
gcc/rust/backend/rust-compile-fnparam.h
gcc/rust/backend/rust-compile-item.h
gcc/rust/backend/rust-compile-pattern.h
gcc/rust/backend/rust-compile-resolve-path.h
gcc/rust/backend/rust-compile-stmt.h
gcc/rust/typecheck/rust-autoderef.cc
gcc/rust/typecheck/rust-hir-path-probe.cc
gcc/rust/typecheck/rust-hir-path-probe.h
gcc/rust/typecheck/rust-hir-trait-reference.h
gcc/rust/typecheck/rust-hir-trait-resolve.cc
gcc/rust/typecheck/rust-hir-trait-resolve.h
gcc/rust/typecheck/rust-hir-type-check-expr.h
gcc/rust/typecheck/rust-hir-type-check-implitem.h
gcc/rust/typecheck/rust-hir-type-check-item.h
gcc/rust/typecheck/rust-hir-type-check-path.cc
gcc/rust/typecheck/rust-hir-type-check-pattern.h
gcc/rust/typecheck/rust-hir-type-check-stmt.h
gcc/rust/typecheck/rust-hir-type-check-type.h
gcc/rust/typecheck/rust-hir-type-check-util.cc [deleted file]
gcc/rust/typecheck/rust-hir-type-check-util.h [deleted file]

index 1d72c86c1687798652eb77fc2484d3a3e3633566..e708ac30a10efed86dcdc4182b429c562491e660 100644 (file)
@@ -130,7 +130,6 @@ GRS_OBJS = \
     rust/rust-tyty-subst.o \
     rust/rust-typecheck-context.o \
     rust/rust-tyty-bounds.o \
-    rust/rust-hir-type-check-util.o \
     rust/rust-hir-trait-resolve.o \
     rust/rust-hir-trait-reference.o \
     rust/rust-hir-type-check-item.o \
index 8e3b53b86f23e03dc4f6010dbada5bd5b9830d1f..9135c63a7af5d9d877b881ee3f49f74dbcd3d59c 100644 (file)
@@ -20,6 +20,7 @@
 #define RUST_COMPILE_BLOCK
 
 #include "rust-compile-base.h"
+#include "rust-hir-visitor.h"
 
 namespace Rust {
 namespace Compile {
index 52db04c200a590901315e9357701fa6f70e8fb60..95c00520d7d6d0dac1d884072c7c4b637e04626d 100644 (file)
@@ -20,6 +20,7 @@
 #define RUST_COMPILE_EXPR
 
 #include "rust-compile-base.h"
+#include "rust-hir-visitor.h"
 
 namespace Rust {
 namespace Compile {
index fa249a240fe892127d293e64c8c9902fab3b8907..10b4efbb6e8da465a07eb0a7be8b49b0e58aacc5 100644 (file)
@@ -20,6 +20,7 @@
 #define RUST_COMPILE_FNPARAM
 
 #include "rust-compile-base.h"
+#include "rust-hir-visitor.h"
 
 namespace Rust {
 namespace Compile {
index 87251ea1c60e970b210be9567f750246484faecd..7ee1d2826478fda0e4f3ea903a9d53475afe9342 100644 (file)
@@ -20,6 +20,7 @@
 #define RUST_COMPILE_ITEM
 
 #include "rust-compile-base.h"
+#include "rust-hir-visitor.h"
 
 namespace Rust {
 namespace Compile {
index 3fba9c51f051af40f45f3d8336bfe570b242b5b0..dfc67d696248ba73ee324b85bcf7f939a17e2e32 100644 (file)
@@ -17,6 +17,7 @@
 // <http://www.gnu.org/licenses/>.
 
 #include "rust-compile-base.h"
+#include "rust-hir-visitor.h"
 
 namespace Rust {
 namespace Compile {
index 93b0a7f855589845f0b5f9679f39b937fb113823..05c882e5b6fd7e9cd931da283663ef82a580f1d9 100644 (file)
@@ -20,6 +20,7 @@
 #define RUST_COMPILE_RESOLVE_PATH
 
 #include "rust-compile-base.h"
+#include "rust-hir-visitor.h"
 
 namespace Rust {
 namespace Compile {
index 7b9e93d193db8290a4eaf2abec54fabe26ac8cf4..7ccc356b8bad48c5619fa0682fa903f92b098329 100644 (file)
@@ -20,6 +20,7 @@
 #define RUST_COMPILE_STMT
 
 #include "rust-compile-base.h"
+#include "rust-hir-visitor.h"
 
 namespace Rust {
 namespace Compile {
index 2f21d2685e4f3c6f318a4c58f5992383ad41bc90..8f5f6242aa2b887db0e2c3e28ea9eced1eee4624 100644 (file)
@@ -21,6 +21,7 @@
 #include "rust-hir-dot-operator.h"
 #include "rust-hir-trait-resolve.h"
 #include "rust-type-util.h"
+#include "rust-substitution-mapper.h"
 
 namespace Rust {
 namespace Resolver {
index b38282c487c9b5e8f193fe648710d87522b0638d..83012ed5ef5d01da6a6beb2256085f0a5488d42d 100644 (file)
@@ -19,6 +19,8 @@
 #include "rust-hir-path-probe.h"
 #include "rust-hir-trait-resolve.h"
 #include "rust-type-util.h"
+#include "rust-hir-type-bounds.h"
+#include "rust-hir-full.h"
 
 namespace Rust {
 namespace Resolver {
index 893353497a807a056092ea58e0c26ff0de4ded4d..1429a64f50caaae067d3820f033da7b6a56c0e26 100644 (file)
 #define RUST_HIR_PATH_PROBE_H
 
 #include "rust-hir-type-check-base.h"
-#include "rust-hir-full.h"
+#include "rust-hir-visitor.h"
 #include "rust-tyty.h"
-#include "rust-substitution-mapper.h"
-#include "rust-hir-type-bounds.h"
 
 namespace Rust {
 namespace Resolver {
index 8ccd29f0861d892254d3f462dce2dd95f068aca1..76d2d8bae83db6c5eb4c645a07b08abe21ead77d 100644 (file)
@@ -20,7 +20,6 @@
 #define RUST_HIR_TRAIT_REF_H
 
 #include "rust-hir-full.h"
-#include "rust-hir-type-check-util.h"
 #include "rust-tyty-visitor.h"
 
 namespace Rust {
index 20ee2e25306de8677f8c1f2230efe07f0ada1d32..37d4239fc0cb4722e7b7ed1163e0b9ed5db7da65 100644 (file)
@@ -567,26 +567,34 @@ AssociatedImplTrait::setup_associated_types (
   TyTy::SubstitutionArgumentMappings associated_type_args (
     std::move (associated_arguments), {}, locus);
 
-  ImplTypeIterator iter (*impl, [&] (HIR::TypeAlias &type) {
-    TraitItemReference *resolved_trait_item = nullptr;
-    bool ok = trait->lookup_trait_item (type.get_new_type_name (),
-                                       &resolved_trait_item);
-    if (!ok)
-      return;
-    if (resolved_trait_item->get_trait_item_type ()
-       != TraitItemReference::TraitItemType::TYPE)
-      return;
-
-    TyTy::BaseType *lookup;
-    if (!context->lookup_type (type.get_mappings ().get_hirid (), &lookup))
-      return;
-
-    // this might be generic
-    TyTy::BaseType *substituted
-      = SubstMapperInternal::Resolve (lookup, associated_type_args);
-    resolved_trait_item->associated_type_set (substituted);
-  });
-  iter.go ();
+  auto &impl_items = impl->get_impl_items ();
+  for (auto &impl_item : impl_items)
+    {
+      bool is_type_alias = impl_item->get_impl_item_type ()
+                          == HIR::ImplItem::ImplItemType::TYPE_ALIAS;
+      if (!is_type_alias)
+       continue;
+
+      HIR::TypeAlias &type = *static_cast<HIR::TypeAlias *> (impl_item.get ());
+
+      TraitItemReference *resolved_trait_item = nullptr;
+      bool ok = trait->lookup_trait_item (type.get_new_type_name (),
+                                         &resolved_trait_item);
+      if (!ok)
+       continue;
+      if (resolved_trait_item->get_trait_item_type ()
+         != TraitItemReference::TraitItemType::TYPE)
+       continue;
+
+      TyTy::BaseType *lookup;
+      if (!context->lookup_type (type.get_mappings ().get_hirid (), &lookup))
+       continue;
+
+      // this might be generic
+      TyTy::BaseType *substituted
+       = SubstMapperInternal::Resolve (lookup, associated_type_args);
+      resolved_trait_item->associated_type_set (substituted);
+    }
 
   return self_result;
 }
index 26bf280361e7cd0fac9d9946ed132f86f0e3611f..93371a7be25320d685484ec1d2aedf4b76b3e26d 100644 (file)
@@ -20,6 +20,7 @@
 #define RUST_HIR_TRAIT_RESOLVE_H
 
 #include "rust-hir-type-check-type.h"
+#include "rust-hir-visitor.h"
 
 namespace Rust {
 namespace Resolver {
index 031d20fe9e0afa9ccafa2bb0c77748837e6bc6b2..5f931d8d517f951a1ea5b69958b630b684307bef 100644 (file)
@@ -20,6 +20,7 @@
 #define RUST_HIR_TYPE_CHECK_EXPR
 
 #include "rust-hir-type-check-base.h"
+#include "rust-hir-visitor.h"
 #include "rust-tyty.h"
 
 namespace Rust {
index 10c007580c34886ec332fe9f68186fd0d5c60494..7db06c0a89fdbdeac60d6847e4b6f3cd17c03e7b 100644 (file)
@@ -20,6 +20,7 @@
 #define RUST_HIR_TYPE_CHECK_IMPLITEM_H
 
 #include "rust-hir-type-check-base.h"
+#include "rust-hir-visitor.h"
 
 namespace Rust {
 namespace Resolver {
index b83fb56594855769ef328f98cb9df9aa0d94f007..432b29271a5bb348f2c7398e1b26523ecad4661d 100644 (file)
@@ -20,6 +20,7 @@
 #define RUST_HIR_TYPE_CHECK_ITEM
 
 #include "rust-hir-type-check-base.h"
+#include "rust-hir-visitor.h"
 
 namespace Rust {
 namespace Resolver {
index 037a2d7dc166d9182433c9543f17dccf339aeade..a52a4e4397ac02fc3a6f995e81351e81f3b6802c 100644 (file)
@@ -23,6 +23,7 @@
 #include "rust-substitution-mapper.h"
 #include "rust-hir-path-probe.h"
 #include "rust-type-util.h"
+#include "rust-hir-type-bounds.h"
 
 namespace Rust {
 namespace Resolver {
index 4bf371ffa06cba9a0396c7af6d0fe6497663b61d..cdfc34ba001fbc34f59a764b61227270f8b0b0b3 100644 (file)
@@ -20,6 +20,7 @@
 #define RUST_HIR_TYPE_CHECK_PATTERN
 
 #include "rust-hir-type-check-base.h"
+#include "rust-hir-visitor.h"
 
 namespace Rust {
 namespace Resolver {
index 1c38416b6d5eed08041d9af565af30db63e60548..947d5ab49721baa05e32bc88be73b8bedad2b101 100644 (file)
@@ -20,6 +20,7 @@
 #define RUST_HIR_TYPE_CHECK_STMT
 
 #include "rust-hir-type-check-base.h"
+#include "rust-hir-visitor.h"
 
 namespace Rust {
 namespace Resolver {
index 2eeb12b12833cee1ea593a28792ce13b23e17496..f8eb9c4c1ba93454841ffacdd8c11e7241b3bb54 100644 (file)
@@ -20,6 +20,7 @@
 #define RUST_HIR_TYPE_CHECK_TYPE
 
 #include "rust-hir-type-check-base.h"
+#include "rust-hir-visitor.h"
 
 namespace Rust {
 namespace Resolver {
diff --git a/gcc/rust/typecheck/rust-hir-type-check-util.cc b/gcc/rust/typecheck/rust-hir-type-check-util.cc
deleted file mode 100644 (file)
index b9bd5bc..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (C) 2021-2024 Free Software Foundation, Inc.
-
-// This file is part of GCC.
-
-// GCC is free software; you can redistribute it and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation; either version 3, or (at your option) any later
-// version.
-
-// GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-// WARRANTY; without even the implied warranty of MERCHANTABILITY or
-// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-// for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with GCC; see the file COPYING3.  If not see
-// <http://www.gnu.org/licenses/>.
-
-#include "rust-hir-type-check-util.h"
-#include "rust-hir-full.h"
-
-namespace Rust {
-namespace Resolver {
-
-void
-ImplTypeIterator::go ()
-{
-  for (auto &item : impl.get_impl_items ())
-    {
-      item->accept_vis (*this);
-    }
-}
-
-void
-ImplTypeIterator::visit (HIR::TypeAlias &alias)
-{
-  cb (alias);
-}
-
-} // namespace Resolver
-} // namespace Rust
diff --git a/gcc/rust/typecheck/rust-hir-type-check-util.h b/gcc/rust/typecheck/rust-hir-type-check-util.h
deleted file mode 100644 (file)
index 6d8171a..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (C) 2021-2024 Free Software Foundation, Inc.
-
-// This file is part of GCC.
-
-// GCC is free software; you can redistribute it and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation; either version 3, or (at your option) any later
-// version.
-
-// GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-// WARRANTY; without even the implied warranty of MERCHANTABILITY or
-// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-// for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with GCC; see the file COPYING3.  If not see
-// <http://www.gnu.org/licenses/>.
-
-#ifndef RUST_HIR_TYPE_CHECK_UTIL_H
-#define RUST_HIR_TYPE_CHECK_UTIL_H
-
-#include "rust-system.h"
-#include "rust-hir-visitor.h"
-
-namespace Rust {
-namespace Resolver {
-
-class ImplTypeIterator : public HIR::HIRFullVisitorBase
-{
-  using HIR::HIRFullVisitorBase::visit;
-
-public:
-  ImplTypeIterator (HIR::ImplBlock &impl,
-                   std::function<void (HIR::TypeAlias &alias)> cb)
-    : impl (impl), cb (cb)
-  {}
-
-  void go ();
-
-  void visit (HIR::TypeAlias &alias) override;
-
-private:
-  HIR::ImplBlock &impl;
-  std::function<void (HIR::TypeAlias &alias)> cb;
-};
-
-} // namespace Resolver
-} // namespace Rust
-
-#endif // RUST_HIR_TYPE_CHECK_UTIL_H