Daniel Jacobowitz wrote: > On Wed, Jan 17, 2007 at 09:55:53PM +0300, Vladimir Prus wrote: >> >> @@ -950,7 +950,8 @@ value_ind (struct value *arg1) >> >> if (TYPE_CODE (base_type) == TYPE_CODE_INT) >> >> return value_at_lazy (builtin_type_int, >> >> (CORE_ADDR) value_as_long (arg1)); >> >> - else if (TYPE_CODE (base_type) == TYPE_CODE_PTR) >> >> + else if (TYPE_CODE (base_type) == TYPE_CODE_PTR >> >> + || TYPE_CODE (base_type) == TYPE_CODE_PTR) >> >> { >> >> struct type *enc_type; >> >> /* We may be pointing to something embedded in a larger object >> >> */ >> > >> > Something tells me you didn't actually need value_ind to handle >> > references... :-) >> >> Why? Because that's a bad idea or because varobj code does not >> need to dereference rereferences? The latter is true, >> attached version of the patch builds on the >> "fix 'editable' attribute for references" patch I've posted earlier >> and now 'adjust_value_for_child_access' asserts that the type >> is not reference. > > All I meant was that you added "is TYPE_CODE_PTR or is TYPE_CODE_PTR". > I guess you meant to check TYPE_CODE_REF, but you must not have needed > it if you didn't notice the typo. Ah ;-) >> +get_value_type (struct varobj *var) >> { >> struct type *type; >> >> - type = get_type (var); >> + if (var->value) >> + type = value_type (var->value); >> + else >> + type = var->type; >> >> - if (type) >> - { >> - if (TYPE_CODE (type) == TYPE_CODE_REF) >> - type = get_target_type (type); >> - if (TYPE_CODE (type) == TYPE_CODE_PTR) >> - type = get_target_type (type); >> - } >> + if (TYPE_CODE (type) == TYPE_CODE_REF) >> + type = get_target_type (type); >> + >> + type = check_typedef (type); >> >> return type; >> } > > I think that if you want to check for references, you need to call > check_typedef first (I just checked that g++ does allow typedefs > to reference types). Otherwise this looks OK to commit. The check_typedef added in "editable fix" patch, that's checked in. The varobj children patch for C++ proper that I've just checked in as well is attached. > > It would be nice to have some tests for not stripping typedefs, > if that's practical, but it's not really important. It would be good, but writing comprehensive tests is not a quick task. It's on my todo, but definitely not today. - Volodya