diff options
author | Philip Herron <herron.philip@googlemail.com> | 2023-06-01 12:51:18 +0100 |
---|---|---|
committer | Philip Herron <philip.herron@embecosm.com> | 2023-06-01 15:09:29 +0000 |
commit | 18c00a4c0c12e721755adf4a4869b6fa7ef1784d (patch) | |
tree | 8859a1511cc934c71419fe951510863cce260753 /gcc | |
parent | 1eef15537f20e7077ace626f55170c70c60191b5 (diff) | |
download | gcc-18c00a4c0c12e721755adf4a4869b6fa7ef1784d.zip gcc-18c00a4c0c12e721755adf4a4869b6fa7ef1784d.tar.gz gcc-18c00a4c0c12e721755adf4a4869b6fa7ef1784d.tar.bz2 |
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>
Diffstat (limited to 'gcc')
23 files changed, 47 insertions, 116 deletions
diff --git a/gcc/rust/Make-lang.in b/gcc/rust/Make-lang.in index 209429c..0e8cd02 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 4afa5dd..a58b0da 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 0962652..6505698 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 8e35a462..9a3a58f 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 70efc15..42ff875 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 4fb3954..a0aab7b 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 ad7a67f..56dcfe5 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 498211d..e33bad9 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 4ad0904..7d91156 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 be3daa1..7140c65 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 dd511ac..a569fea 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 2179d09..8062406 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 58b791b..a2c6a97 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 da8e2c0..92cb62c 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 1a9591f1..8b2db54 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 0e5f16d..031fdc2 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 2268fdb..68eac7c 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 68966e0..02821fc 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 709e8be..9f1e5fe 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 9e4ca08..abc2140 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 571485d..64d0c26 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 a90a153..0000000 --- a/gcc/rust/typecheck/rust-hir-type-check-util.cc +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (C) 2021-2023 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 5758309..0000000 --- a/gcc/rust/typecheck/rust-hir-type-check-util.h +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (C) 2021-2023 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 |