https://gcc.gnu.org/g:e4b68a6cd5349ad153ac30cc2ddf668498255e2e

commit e4b68a6cd5349ad153ac30cc2ddf668498255e2e
Author: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com>
Date:   Wed Nov 20 01:28:04 2024 +0100

    Fix FnParam pattern location ternary logic
    
    Condition was inverted, we should retrieve the locus only if we have a
    pattern.
    
    gcc/rust/ChangeLog:
    
            * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): Do not
            get a reference if the pattern does not exist.
            (TypeCheckMethodCallExpr::check): Likewise.
    
    Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com>

Diff:
---
 gcc/rust/typecheck/rust-tyty-call.cc | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/gcc/rust/typecheck/rust-tyty-call.cc 
b/gcc/rust/typecheck/rust-tyty-call.cc
index da1c383b2ca2..dbb0379ebbfc 100644
--- a/gcc/rust/typecheck/rust-tyty-call.cc
+++ b/gcc/rust/typecheck/rust-tyty-call.cc
@@ -152,12 +152,11 @@ TypeCheckCallExpr::visit (FnType &type)
       if (i < type.num_params ())
        {
          auto &fnparam = type.param_at (i);
-         auto &fn_param_pattern = fnparam.get_pattern ();
          BaseType *param_ty = fnparam.get_type ();
          location_t param_locus
            = fnparam.has_pattern ()
-               ? mappings.lookup_location (param_ty->get_ref ())
-               : fn_param_pattern.get_locus ();
+               ? fnparam.get_pattern ().get_locus ()
+               : mappings.lookup_location (param_ty->get_ref ());
 
          HirId coercion_side_id = argument->get_mappings ().get_hirid ();
          auto resolved_argument_type
@@ -375,12 +374,11 @@ TypeCheckMethodCallExpr::check (FnType &type)
       location_t arg_locus = argument.get_locus ();
 
       auto &fnparam = type.param_at (i);
-      HIR::Pattern &fn_param_pattern = fnparam.get_pattern ();
       BaseType *param_ty = fnparam.get_type ();
       location_t param_locus
        = fnparam.has_pattern ()
-           ? mappings.lookup_location (param_ty->get_ref ())
-           : fn_param_pattern.get_locus ();
+           ? fnparam.get_pattern ().get_locus ()
+           : mappings.lookup_location (param_ty->get_ref ());
 
       auto argument_expr_tyty = argument.get_argument_type ();
       HirId coercion_side_id = argument.get_mappings ().get_hirid ();

Reply via email to