* linespec.c (lookup_prefix_sym): Lookup the symbol
in both STRUCT_DOMAIN and VAR_DOMAIN.
This commit is contained in:
parent
40f0318e99
commit
1e5a1abc15
@ -1,3 +1,8 @@
|
||||
2009-11-11 Keith Seitz <keiths@redhat.com>
|
||||
|
||||
* linespec.c (lookup_prefix_sym): Lookup the symbol
|
||||
in both STRUCT_DOMAIN and VAR_DOMAIN.
|
||||
|
||||
2009-11-11 Michael Snyder <msnyder@vmware.com>
|
||||
|
||||
* darwin-nat-info.c: Update copyright.
|
||||
|
@ -1428,6 +1428,7 @@ lookup_prefix_sym (char **argptr, char *p)
|
||||
{
|
||||
char *p1;
|
||||
char *copy;
|
||||
struct symbol *sym;
|
||||
|
||||
/* Extract the class name. */
|
||||
p1 = p;
|
||||
@ -1446,7 +1447,26 @@ lookup_prefix_sym (char **argptr, char *p)
|
||||
/* At this point p1->"::inA::fun", p->"inA::fun" copy->"AAA",
|
||||
argptr->"inA::fun" */
|
||||
|
||||
return lookup_symbol (copy, 0, STRUCT_DOMAIN, 0);
|
||||
sym = lookup_symbol (copy, 0, STRUCT_DOMAIN, 0);
|
||||
if (sym == NULL)
|
||||
{
|
||||
/* Typedefs are in VAR_DOMAIN so the above symbol lookup will
|
||||
fail when the user attempts to lookup a method of a class
|
||||
via a typedef'd name (NOT via the class's name, which is already
|
||||
handled in symbol_matches_domain). So try the lookup again
|
||||
using VAR_DOMAIN (where typedefs live) and double-check that we
|
||||
found a struct/class type. */
|
||||
struct symbol *s = lookup_symbol (copy, 0, VAR_DOMAIN, 0);
|
||||
if (s != NULL)
|
||||
{
|
||||
struct type *t = SYMBOL_TYPE (s);
|
||||
CHECK_TYPEDEF (t);
|
||||
if (TYPE_CODE (t) == TYPE_CODE_STRUCT)
|
||||
return s;
|
||||
}
|
||||
}
|
||||
|
||||
return sym;
|
||||
}
|
||||
|
||||
/* This finds the method COPY in the class whose type is T and whose
|
||||
|
Loading…
Reference in New Issue
Block a user