Re: RFA: PR 2484: completion of macro names

Pedro Alves
2008-09-30T16:54:39Z

On Tuesday 30 September 2008 17:07:49, Tom Tromey wrote:

> Fortran allows macro expansion now. I did not change this, because it
> also requires changes to the Fortran lexer in gdb. I think that is
> outside the scope of this patch. Perhaps a Fortran maintainer could
> implement it.

Certainly. Thanks for the clarifications.

> + /* Style of macro expansion, if any, supported by this language. */
> + enum macro_expansion la_macro_expansion : 1;

Left over ` : 1'.

> + /* Add any macros visible in the default scope. Note that this
> + may yield the occasional wrong result, because an expression
> + might be evaluated in a scope other than the default. For
> + example, if the user types "break file:line if <TAB>", the
> + resulting expression will be evaluated at "file:line" -- but
> + at there does not seem to be a way to detect this at
> + completion time. */
> + scope = default_macro_scope ();

Ah, thanks. This isn't much different from local symbols,
which we use the selected frame/block.

:REVIEWMAIL:

Looks OK to me. Thanks again for doing this.

> 2008-09-30 Tom Tromey <tromey@redhat.com>
>
> PR gdb/2484:
> * symtab.c (struct add_macro_name_data): New struct.
> (add_macro_name): New function.
> (default_make_symbol_completion_list): Complete macro names.
> * scm-lang.c (scm_language_defn): Update.
> * p-lang.c (pascal_language_defn): Update.
> * objc-lang.c (objc_language_defn): Update.
> * macrotab.h (macro_callback_fn): Add user_data argument.
> (macro_for_each): Likewise.
> (macro_for_each_in_scope): Declare.
> * macrotab.c: (struct macro_for_each_data): New struct.
> (foreach_macro): Use it.
> (macro_for_each): Likewise.
> (foreach_macro_in_scope): New function.
> (macro_for_each_in_scope): Likewise.
> * macrocmd.c (print_one_macro): Add argument.
> (macro_list_command): Pass NULL to macro_for_each.
> * m2-lang.c (m2_language_defn): Update.
> * language.h (struct language_defn) <la_macro_expansion>: New
> field.
> (macro_expansion): New enum.
> * language.c (unknown_language_defn): Update. Fix order of
> initializers.
> (auto_language_defn): Likewise.
> (local_language_defn): Update.
> * jv-lang.c (java_language_defn): Update.
> * f-lang.c (f_language_defn): Update.
> * c-lang.c (c_language_defn): Update.
> (cplus_language_defn): Likewise.
> (asm_language_defn): Likewise.
> (minimal_language_defn): Likewise.
> * ada-lang.c (ada_language_defn): Update.
>
> 2008-09-30 Tom Tromey <tromey@redhat.com>
>
> * gdb.base/macscp.exp: Add completion tests.
> * gdb.base/macscp1.c (FIFTY_SEVEN): New macro.
> (TWENTY_THREE): Likewise.
> (FORTY_EIGHT): Likewise.
>

--
Pedro Alves