diff options
author | Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com> | 2024-11-19 15:37:56 +0100 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2025-03-21 12:32:57 +0100 |
commit | ba71c9d3b565fd4a493e1ddcf7a9584e1b33c0c6 (patch) | |
tree | f081270f27e969185de8412a23a544d09bfb4043 | |
parent | a99d29095028be7a68c876d6124b8e845fc80fef (diff) | |
download | gcc-ba71c9d3b565fd4a493e1ddcf7a9584e1b33c0c6.zip gcc-ba71c9d3b565fd4a493e1ddcf7a9584e1b33c0c6.tar.gz gcc-ba71c9d3b565fd4a493e1ddcf7a9584e1b33c0c6.tar.bz2 |
gccrs: FnParam cloning now keeps projections
FnParam type where monomorphized during cloning.
gcc/rust/ChangeLog:
* typecheck/rust-tyty.h: Reverse monomorphization during cloning and
make a new function to explicitly monomorphize.
* typecheck/rust-tyty.cc: Use monomorphization when required.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
-rw-r--r-- | gcc/rust/typecheck/rust-tyty.cc | 2 | ||||
-rw-r--r-- | gcc/rust/typecheck/rust-tyty.h | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/gcc/rust/typecheck/rust-tyty.cc b/gcc/rust/typecheck/rust-tyty.cc index e2f1361..1073dfa6 100644 --- a/gcc/rust/typecheck/rust-tyty.cc +++ b/gcc/rust/typecheck/rust-tyty.cc @@ -597,7 +597,7 @@ BaseType::monomorphized_clone () const { std::vector<TyTy::FnParam> cloned_params; for (auto &p : fn->get_params ()) - cloned_params.push_back (p.clone ()); + cloned_params.push_back (p.monomorphized_clone ()); BaseType *retty = fn->get_return_type ()->monomorphized_clone (); return new FnType (fn->get_ref (), fn->get_ty_ref (), fn->get_id (), diff --git a/gcc/rust/typecheck/rust-tyty.h b/gcc/rust/typecheck/rust-tyty.h index 4d1a082..94f7bce 100644 --- a/gcc/rust/typecheck/rust-tyty.h +++ b/gcc/rust/typecheck/rust-tyty.h @@ -792,6 +792,11 @@ public: FnParam clone () const { + return FnParam (pattern->clone_pattern (), type->clone ()); + } + + FnParam monomorphized_clone () const + { return FnParam (pattern->clone_pattern (), type->monomorphized_clone ()); } |