From aed731e8f063ab8040f22263e1813e214586558b Mon Sep 17 00:00:00 2001 From: GS-GOAT <86884129+GS-GOAT@users.noreply.github.com> Date: Sat, 8 Feb 2025 00:10:01 +0530 Subject: [PATCH 1/3] Get rid of duplicate interface #3396 - Updated single-parameter calls to pass an explicit HirId alongside the type. - This refactor ensures that all calls to insert_implicit_type consistently use the two-parameter version, improving clarity and maintainability of type mapping tracking. Fixes #3396 --- gcc/rust/typecheck/rust-autoderef.cc | 2 +- gcc/rust/typecheck/rust-hir-type-check-expr.cc | 2 +- gcc/rust/typecheck/rust-hir-type-check-pattern.cc | 3 ++- gcc/rust/typecheck/rust-hir-type-check.h | 1 - gcc/rust/typecheck/rust-typecheck-context.cc | 7 ------- 5 files changed, 4 insertions(+), 11 deletions(-) diff --git a/gcc/rust/typecheck/rust-autoderef.cc b/gcc/rust/typecheck/rust-autoderef.cc index a0a2b50019bc..f4dfa668ee30 100644 --- a/gcc/rust/typecheck/rust-autoderef.cc +++ b/gcc/rust/typecheck/rust-autoderef.cc @@ -113,7 +113,7 @@ Adjuster::try_unsize_type (TyTy::BaseType *ty) auto slice = new TyTy::SliceType (mappings.get_next_hir_id (), ty->get_ident ().locus, TyTy::TyVar (slice_elem->get_ref ())); - context->insert_implicit_type (slice); + context->insert_implicit_type (slice->get_ref (), slice); return Adjustment (Adjustment::AdjustmentType::UNSIZE, ty, slice); } diff --git a/gcc/rust/typecheck/rust-hir-type-check-expr.cc b/gcc/rust/typecheck/rust-hir-type-check-expr.cc index 2fb4d3cba347..2d9ec8359959 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-expr.cc +++ b/gcc/rust/typecheck/rust-hir-type-check-expr.cc @@ -1576,7 +1576,7 @@ TypeCheckExpr::visit (HIR::ClosureExpr &expr) TyTy::TupleType *closure_args = new TyTy::TupleType (implicit_args_id, expr.get_locus (), parameter_types); - context->insert_implicit_type (closure_args); + context->insert_implicit_type (closure_args->get_ref (), closure_args); location_t result_type_locus = expr.has_return_type () ? expr.get_return_type ().get_locus () diff --git a/gcc/rust/typecheck/rust-hir-type-check-pattern.cc b/gcc/rust/typecheck/rust-hir-type-check-pattern.cc index 765504fa785e..94d198c4d865 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-pattern.cc +++ b/gcc/rust/typecheck/rust-hir-type-check-pattern.cc @@ -653,7 +653,8 @@ ClosureParamInfer::Resolve (HIR::Pattern &pattern) if (resolver.infered->get_kind () != TyTy::TypeKind::ERROR) { - resolver.context->insert_implicit_type (resolver.infered); + resolver.context->insert_implicit_type (resolver.infered->get_ref (), + resolver.infered); resolver.mappings.insert_location (resolver.infered->get_ref (), pattern.get_locus ()); } diff --git a/gcc/rust/typecheck/rust-hir-type-check.h b/gcc/rust/typecheck/rust-hir-type-check.h index 21ecf2ce7861..65f38c6099cd 100644 --- a/gcc/rust/typecheck/rust-hir-type-check.h +++ b/gcc/rust/typecheck/rust-hir-type-check.h @@ -171,7 +171,6 @@ class TypeCheckContext void insert_type (const Analysis::NodeMapping &mappings, TyTy::BaseType *type); - void insert_implicit_type (TyTy::BaseType *type); bool lookup_type (HirId id, TyTy::BaseType **type) const; void clear_type (TyTy::BaseType *ty); diff --git a/gcc/rust/typecheck/rust-typecheck-context.cc b/gcc/rust/typecheck/rust-typecheck-context.cc index 4cee74ae250c..907833fba971 100644 --- a/gcc/rust/typecheck/rust-typecheck-context.cc +++ b/gcc/rust/typecheck/rust-typecheck-context.cc @@ -90,13 +90,6 @@ TypeCheckContext::insert_type (const Analysis::NodeMapping &mappings, resolved[id] = type; } -void -TypeCheckContext::insert_implicit_type (TyTy::BaseType *type) -{ - rust_assert (type != nullptr); - resolved[type->get_ref ()] = type; -} - void TypeCheckContext::insert_implicit_type (HirId id, TyTy::BaseType *type) { From 45af825d47fb0e3337e32a13ea7b32b92776b4fa Mon Sep 17 00:00:00 2001 From: GS-GOAT <86884129+GS-GOAT@users.noreply.github.com> Date: Sat, 8 Feb 2025 01:37:13 +0530 Subject: [PATCH 2/3] Ran clang formatting #3396 --- gcc/rust/typecheck/rust-hir-type-check-pattern.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/rust/typecheck/rust-hir-type-check-pattern.cc b/gcc/rust/typecheck/rust-hir-type-check-pattern.cc index 94d198c4d865..b17aa1ebfff3 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-pattern.cc +++ b/gcc/rust/typecheck/rust-hir-type-check-pattern.cc @@ -654,7 +654,7 @@ ClosureParamInfer::Resolve (HIR::Pattern &pattern) if (resolver.infered->get_kind () != TyTy::TypeKind::ERROR) { resolver.context->insert_implicit_type (resolver.infered->get_ref (), - resolver.infered); + resolver.infered); resolver.mappings.insert_location (resolver.infered->get_ref (), pattern.get_locus ()); } From f81b4e22476accc857d75834e99c4d24e6fbe3d1 Mon Sep 17 00:00:00 2001 From: GS-GOAT <86884129+GS-GOAT@users.noreply.github.com> Date: Sat, 8 Feb 2025 01:38:19 +0530 Subject: [PATCH 3/3] Ran clang formatting #3396 --- gcc/rust/typecheck/rust-hir-type-check-pattern.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/rust/typecheck/rust-hir-type-check-pattern.cc b/gcc/rust/typecheck/rust-hir-type-check-pattern.cc index b17aa1ebfff3..bc816fd49ab4 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-pattern.cc +++ b/gcc/rust/typecheck/rust-hir-type-check-pattern.cc @@ -654,7 +654,7 @@ ClosureParamInfer::Resolve (HIR::Pattern &pattern) if (resolver.infered->get_kind () != TyTy::TypeKind::ERROR) { resolver.context->insert_implicit_type (resolver.infered->get_ref (), - resolver.infered); + resolver.infered); resolver.mappings.insert_location (resolver.infered->get_ref (), pattern.get_locus ()); }