Split out eval_op_rust_ind
authorTom Tromey <tom@tromey.com>
Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)
committerTom Tromey <tom@tromey.com>
Mon, 8 Mar 2021 14:28:07 +0000 (07:28 -0700)
This splits UNOP_IND into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* rust-lang.c (eval_op_rust_ind): New function.
(rust_evaluate_subexp): Use it.

gdb/ChangeLog
gdb/rust-lang.c

index 7849e59be33f8a77d1d2ac0491b0784e9d8d5455..22c017f0ef090329e808942abd715de01c044614 100644 (file)
@@ -1,3 +1,8 @@
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+       * rust-lang.c (eval_op_rust_ind): New function.
+       (rust_evaluate_subexp): Use it.
+
 2021-03-08  Tom Tromey  <tom@tromey.com>
 
        * rust-lang.c (rust_subscript): Change parameters.
index 5a937d95efae8b62ae3881efc277570ede4b2da0..173b418e2f54796bb59287df23671eb122280d6d 100644 (file)
@@ -1322,6 +1322,21 @@ rust_subscript (struct type *expect_type, struct expression *exp,
   return result;
 }
 
+/* A helper function for UNOP_IND.  */
+
+static struct value *
+eval_op_rust_ind (struct type *expect_type, struct expression *exp,
+                 enum noside noside,
+                 struct value *value)
+{
+  gdb_assert (noside == EVAL_NORMAL);
+  struct value *trait_ptr = rust_get_trait_object_pointer (value);
+  if (trait_ptr != NULL)
+    value = trait_ptr;
+
+  return value_ind (value);
+}
+
 /* evaluate_exp implementation for Rust.  */
 
 static struct value *
@@ -1341,12 +1356,7 @@ rust_evaluate_subexp (struct type *expect_type, struct expression *exp,
            ++*pos;
            struct value *value = evaluate_subexp (expect_type, exp, pos,
                                                   noside);
-
-           struct value *trait_ptr = rust_get_trait_object_pointer (value);
-           if (trait_ptr != NULL)
-             value = trait_ptr;
-
-           result = value_ind (value);
+           result = eval_op_rust_ind (expect_type, exp, noside, value);
          }
       }
       break;