From mboxrd@z Thu Jan 1 00:00:00 1970 From: Fernando Nasser To: Jim Blandy Cc: gdb-patches@sources.redhat.com, Elena Zannoni Subject: Re: [RFA]: Clean up C++ type handling in linespec parsing Date: Fri, 16 Mar 2001 01:36:00 -0000 Message-id: <3AB1DD86.42DA7AC@redhat.com> References: <200103160310.WAA26454@zwingli.cygnus.com> X-SW-Source: 2001-03/msg00277.html OK with me. Lets ask Elena. Elena, I know that you would like to move this to some language land, but maybe its better get it fixed anyway. Fernando Jim Blandy wrote: > > 2001-03-15 Jim Blandy > > * linespec.c (find_methods): Just call CHECK_TYPEDEF on t, rather > than asking for sym_class's type; that's circuitous. Remove > sym_class, since the last use of it is gone. (This is a minor > revision of a change from Dan Berlin.) > > Index: gdb/linespec.c > =================================================================== > RCS file: /cvs/src/src/gdb/linespec.c,v > retrieving revision 1.6 > diff -c -c -r1.6 linespec.c > *** gdb/linespec.c 2001/03/14 18:36:45 1.6 > --- gdb/linespec.c 2001/03/16 02:06:33 > *************** > *** 104,126 **** > { > int i1 = 0; > int ibase; > - struct symbol *sym_class; > char *class_name = type_name_no_tag (t); > > /* Ignore this class if it doesn't have a name. This is ugly, but > unless we figure out how to get the physname without the name of > the class, then the loop can't do any good. */ > if (class_name > ! && (sym_class = lookup_symbol (class_name, > ! (struct block *) NULL, > ! STRUCT_NAMESPACE, > ! (int *) NULL, > ! (struct symtab **) NULL))) > { > int method_counter; > > ! /* FIXME: Shouldn't this just be CHECK_TYPEDEF (t)? */ > ! t = SYMBOL_TYPE (sym_class); > > /* Loop over each method name. At this level, all overloads of a name > are counted as a single name. There is an inner loop which loops over > --- 104,122 ---- > { > int i1 = 0; > int ibase; > char *class_name = type_name_no_tag (t); > > /* Ignore this class if it doesn't have a name. This is ugly, but > unless we figure out how to get the physname without the name of > the class, then the loop can't do any good. */ > if (class_name > ! && (lookup_symbol (class_name, (struct block *) NULL, > ! STRUCT_NAMESPACE, (int *) NULL, > ! (struct symtab **) NULL))) > { > int method_counter; > > ! CHECK_TYPEDEF (t); > > /* Loop over each method name. At this level, all overloads of a name > are counted as a single name. There is an inner loop which loops over -- Fernando Nasser Red Hat Canada Ltd. E-Mail: fnasser@redhat.com 2323 Yonge Street, Suite #300 Toronto, Ontario M4P 2C9