[gcc r14-7631] gccrs: get rid of useless helper class and fix header usage
Arthur Cohen
cohenarthur@gcc.gnu.org
Tue Jan 16 17:46:48 GMT 2024
https://gcc.gnu.org/g:d3d751cbac030902014856bbbd310a90b02912af
commit r14-7631-gd3d751cbac030902014856bbbd310a90b02912af
Author: Philip Herron <herron.philip@googlemail.com>
Date: Thu Jun 1 12:51:18 2023 +0100
gccrs: get rid of useless helper class and fix header usage
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>
Diff:
---
gcc/rust/Make-lang.in | 1 -
gcc/rust/backend/rust-compile-block.h | 1 +
gcc/rust/backend/rust-compile-expr.h | 1 +
gcc/rust/backend/rust-compile-fnparam.h | 1 +
gcc/rust/backend/rust-compile-item.h | 1 +
gcc/rust/backend/rust-compile-pattern.h | 1 +
gcc/rust/backend/rust-compile-resolve-path.h | 1 +
gcc/rust/backend/rust-compile-stmt.h | 1 +
gcc/rust/typecheck/rust-autoderef.cc | 1 +
gcc/rust/typecheck/rust-hir-path-probe.cc | 2 +
gcc/rust/typecheck/rust-hir-path-probe.h | 4 +-
gcc/rust/typecheck/rust-hir-trait-reference.h | 1 -
gcc/rust/typecheck/rust-hir-trait-resolve.cc | 48 +++++++++++++---------
gcc/rust/typecheck/rust-hir-trait-resolve.h | 1 +
gcc/rust/typecheck/rust-hir-type-check-expr.h | 1 +
gcc/rust/typecheck/rust-hir-type-check-implitem.h | 1 +
gcc/rust/typecheck/rust-hir-type-check-item.h | 1 +
gcc/rust/typecheck/rust-hir-type-check-path.cc | 1 +
gcc/rust/typecheck/rust-hir-type-check-pattern.h | 1 +
gcc/rust/typecheck/rust-hir-type-check-stmt.h | 1 +
gcc/rust/typecheck/rust-hir-type-check-type.h | 1 +
gcc/rust/typecheck/rust-hir-type-check-util.cc | 41 -------------------
gcc/rust/typecheck/rust-hir-type-check-util.h | 50 -----------------------
23 files changed, 47 insertions(+), 116 deletions(-)
diff --git a/gcc/rust/Make-lang.in b/gcc/rust/Make-lang.in
index 1d72c86c168..e708ac30a10 100644
--- a/gcc/rust/Make-lang.in
+++ b/gcc/rust/Make-lang.in
@@ -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 \
diff --git a/gcc/rust/backend/rust-compile-block.h b/gcc/rust/backend/rust-compile-block.h
index 8e3b53b86f2..9135c63a7af 100644
--- a/gcc/rust/backend/rust-compile-block.h
+++ b/gcc/rust/backend/rust-compile-block.h
@@ -20,6 +20,7 @@
#define RUST_COMPILE_BLOCK
#include "rust-compile-base.h"
+#include "rust-hir-visitor.h"
namespace Rust {
namespace Compile {
diff --git a/gcc/rust/backend/rust-compile-expr.h b/gcc/rust/backend/rust-compile-expr.h
index 52db04c200a..95c00520d7d 100644
--- a/gcc/rust/backend/rust-compile-expr.h
+++ b/gcc/rust/backend/rust-compile-expr.h
@@ -20,6 +20,7 @@
#define RUST_COMPILE_EXPR
#include "rust-compile-base.h"
+#include "rust-hir-visitor.h"
namespace Rust {
namespace Compile {
diff --git a/gcc/rust/backend/rust-compile-fnparam.h b/gcc/rust/backend/rust-compile-fnparam.h
index fa249a240fe..10b4efbb6e8 100644
--- a/gcc/rust/backend/rust-compile-fnparam.h
+++ b/gcc/rust/backend/rust-compile-fnparam.h
@@ -20,6 +20,7 @@
#define RUST_COMPILE_FNPARAM
#include "rust-compile-base.h"
+#include "rust-hir-visitor.h"
namespace Rust {
namespace Compile {
diff --git a/gcc/rust/backend/rust-compile-item.h b/gcc/rust/backend/rust-compile-item.h
index 87251ea1c60..7ee1d282647 100644
--- a/gcc/rust/backend/rust-compile-item.h
+++ b/gcc/rust/backend/rust-compile-item.h
@@ -20,6 +20,7 @@
#define RUST_COMPILE_ITEM
#include "rust-compile-base.h"
+#include "rust-hir-visitor.h"
namespace Rust {
namespace Compile {
diff --git a/gcc/rust/backend/rust-compile-pattern.h b/gcc/rust/backend/rust-compile-pattern.h
index 3fba9c51f05..dfc67d69624 100644
--- a/gcc/rust/backend/rust-compile-pattern.h
+++ b/gcc/rust/backend/rust-compile-pattern.h
@@ -17,6 +17,7 @@
// <http://www.gnu.org/licenses/>.
#include "rust-compile-base.h"
+#include "rust-hir-visitor.h"
namespace Rust {
namespace Compile {
diff --git a/gcc/rust/backend/rust-compile-resolve-path.h b/gcc/rust/backend/rust-compile-resolve-path.h
index 93b0a7f8555..05c882e5b6f 100644
--- a/gcc/rust/backend/rust-compile-resolve-path.h
+++ b/gcc/rust/backend/rust-compile-resolve-path.h
@@ -20,6 +20,7 @@
#define RUST_COMPILE_RESOLVE_PATH
#include "rust-compile-base.h"
+#include "rust-hir-visitor.h"
namespace Rust {
namespace Compile {
diff --git a/gcc/rust/backend/rust-compile-stmt.h b/gcc/rust/backend/rust-compile-stmt.h
index 7b9e93d193d..7ccc356b8ba 100644
--- a/gcc/rust/backend/rust-compile-stmt.h
+++ b/gcc/rust/backend/rust-compile-stmt.h
@@ -20,6 +20,7 @@
#define RUST_COMPILE_STMT
#include "rust-compile-base.h"
+#include "rust-hir-visitor.h"
namespace Rust {
namespace Compile {
diff --git a/gcc/rust/typecheck/rust-autoderef.cc b/gcc/rust/typecheck/rust-autoderef.cc
index 2f21d2685e4..8f5f6242aa2 100644
--- a/gcc/rust/typecheck/rust-autoderef.cc
+++ b/gcc/rust/typecheck/rust-autoderef.cc
@@ -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 {
diff --git a/gcc/rust/typecheck/rust-hir-path-probe.cc b/gcc/rust/typecheck/rust-hir-path-probe.cc
index b38282c487c..83012ed5ef5 100644
--- a/gcc/rust/typecheck/rust-hir-path-probe.cc
+++ b/gcc/rust/typecheck/rust-hir-path-probe.cc
@@ -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 {
diff --git a/gcc/rust/typecheck/rust-hir-path-probe.h b/gcc/rust/typecheck/rust-hir-path-probe.h
index 893353497a8..1429a64f50c 100644
--- a/gcc/rust/typecheck/rust-hir-path-probe.h
+++ b/gcc/rust/typecheck/rust-hir-path-probe.h
@@ -20,10 +20,8 @@
#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 {
diff --git a/gcc/rust/typecheck/rust-hir-trait-reference.h b/gcc/rust/typecheck/rust-hir-trait-reference.h
index 8ccd29f0861..76d2d8bae83 100644
--- a/gcc/rust/typecheck/rust-hir-trait-reference.h
+++ b/gcc/rust/typecheck/rust-hir-trait-reference.h
@@ -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 {
diff --git a/gcc/rust/typecheck/rust-hir-trait-resolve.cc b/gcc/rust/typecheck/rust-hir-trait-resolve.cc
index 20ee2e25306..37d4239fc0c 100644
--- a/gcc/rust/typecheck/rust-hir-trait-resolve.cc
+++ b/gcc/rust/typecheck/rust-hir-trait-resolve.cc
@@ -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;
}
diff --git a/gcc/rust/typecheck/rust-hir-trait-resolve.h b/gcc/rust/typecheck/rust-hir-trait-resolve.h
index 26bf280361e..93371a7be25 100644
--- a/gcc/rust/typecheck/rust-hir-trait-resolve.h
+++ b/gcc/rust/typecheck/rust-hir-trait-resolve.h
@@ -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 {
diff --git a/gcc/rust/typecheck/rust-hir-type-check-expr.h b/gcc/rust/typecheck/rust-hir-type-check-expr.h
index 031d20fe9e0..5f931d8d517 100644
--- a/gcc/rust/typecheck/rust-hir-type-check-expr.h
+++ b/gcc/rust/typecheck/rust-hir-type-check-expr.h
@@ -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 {
diff --git a/gcc/rust/typecheck/rust-hir-type-check-implitem.h b/gcc/rust/typecheck/rust-hir-type-check-implitem.h
index 10c007580c3..7db06c0a89f 100644
--- a/gcc/rust/typecheck/rust-hir-type-check-implitem.h
+++ b/gcc/rust/typecheck/rust-hir-type-check-implitem.h
@@ -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 {
diff --git a/gcc/rust/typecheck/rust-hir-type-check-item.h b/gcc/rust/typecheck/rust-hir-type-check-item.h
index b83fb565948..432b29271a5 100644
--- a/gcc/rust/typecheck/rust-hir-type-check-item.h
+++ b/gcc/rust/typecheck/rust-hir-type-check-item.h
@@ -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 {
diff --git a/gcc/rust/typecheck/rust-hir-type-check-path.cc b/gcc/rust/typecheck/rust-hir-type-check-path.cc
index 037a2d7dc16..a52a4e4397a 100644
--- a/gcc/rust/typecheck/rust-hir-type-check-path.cc
+++ b/gcc/rust/typecheck/rust-hir-type-check-path.cc
@@ -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 {
diff --git a/gcc/rust/typecheck/rust-hir-type-check-pattern.h b/gcc/rust/typecheck/rust-hir-type-check-pattern.h
index 4bf371ffa06..cdfc34ba001 100644
--- a/gcc/rust/typecheck/rust-hir-type-check-pattern.h
+++ b/gcc/rust/typecheck/rust-hir-type-check-pattern.h
@@ -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 {
diff --git a/gcc/rust/typecheck/rust-hir-type-check-stmt.h b/gcc/rust/typecheck/rust-hir-type-check-stmt.h
index 1c38416b6d5..947d5ab4972 100644
--- a/gcc/rust/typecheck/rust-hir-type-check-stmt.h
+++ b/gcc/rust/typecheck/rust-hir-type-check-stmt.h
@@ -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 {
diff --git a/gcc/rust/typecheck/rust-hir-type-check-type.h b/gcc/rust/typecheck/rust-hir-type-check-type.h
index 2eeb12b1283..f8eb9c4c1ba 100644
--- a/gcc/rust/typecheck/rust-hir-type-check-type.h
+++ b/gcc/rust/typecheck/rust-hir-type-check-type.h
@@ -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
index b9bd5bc8c83..00000000000
--- a/gcc/rust/typecheck/rust-hir-type-check-util.cc
+++ /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
index 6d8171a9782..00000000000
--- a/gcc/rust/typecheck/rust-hir-type-check-util.h
+++ /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
More information about the Gcc-cvs
mailing list