+/* A helper for print_variant_clauses that prints the members of
+ VAR_TYPE. DISCR_TYPE is the type of the discriminant (or nullptr
+ if not available). The discriminant is contained in OUTER_TYPE.
+ STREAM, LEVEL, SHOW, and FLAGS are the same as for
+ ada_print_type. */
+
+static void
+print_variant_clauses (struct type *var_type, struct type *discr_type,
+ struct type *outer_type, struct ui_file *stream,
+ int show, int level,
+ const struct type_print_options *flags)
+{
+ for (int i = 0; i < var_type->num_fields (); i += 1)
+ {
+ gdb_printf (stream, "\n%*swhen ", level, "");
+ if (print_choices (var_type, i, stream, discr_type))
+ {
+ if (print_record_field_types (var_type->field (i).type (),
+ outer_type, stream, show, level,
+ flags)
+ <= 0)
+ gdb_printf (stream, " null;");
+ }
+ else
+ print_selected_record_field_types (var_type, outer_type, i, i,
+ stream, show, level, flags);
+ }
+}
+