gdb: Convert language la_lookup_symbol_nonlocal field to a method
This commit changes the language_data::la_lookup_symbol_nonlocal function pointer member variable into a member function of language_defn. There should be no user visible changes after this commit. gdb/ChangeLog: * ada-lang.c (ada_lookup_symbol_nonlocal): Rename to ada_language::lookup_symbol_nonlocal. (ada_language_data): Delete la_lookup_symbol_nonlocal initializer. (ada_language::lookup_symbol_nonlocal): New member function, implementation from ada_lookup_symbol_nonlocal. * c-lang.c (c_language_data): Delete la_lookup_symbol_nonlocal initializer. (cplus_language_data): Delete la_lookup_symbol_nonlocal initializer. (cplus_language::lookup_symbol_nonlocal): New member function. (asm_language_data): Delete la_lookup_symbol_nonlocal initializer. (minimal_language_data) Likewise. * cp-namespace.c (cp_lookup_nested_symbol): Update comment. * d-lang.c (d_language_data): Delete la_lookup_symbol_nonlocal initializer. (d_language::lookup_symbol_nonlocal): New member function. * f-lang.c (f_language_data): Delete la_lookup_symbol_nonlocal initializer. (f_language::lookup_symbol_nonlocal): New member function. * go-lang.c (go_language_data): Delete la_lookup_symbol_nonlocal initializer. * language.c (unknown_language_data): Likewise. (auto_language_data): Likewise. * language.h (language_data): Delete la_lookup_symbol_nonlocal field. (language_defn::lookup_symbol_nonlocal): New member function. * m2-lang.c (m2_language_data): Delete la_lookup_symbol_nonlocal initializer. * objc-lang.c (objc_language_data): Likewise. * opencl-lang.c (opencl_language_data): Likewise. * p-lang.c (pascal_language_data): Likewise. * rust-lang.c (rust_lookup_symbol_nonlocal): Rename to rust_language::lookup_symbol_nonlocal. (rust_language_data): Delete la_lookup_symbol_nonlocal initializer. (rust_language::lookup_symbol_nonlocal): New member function, implementation from rust_lookup_symbol_nonlocal. * symtab.c (lookup_symbol_aux): Update call to lookup_symbol_nonlocal. (basic_lookup_symbol_nonlocal): Rename to... (language_defn::lookup_symbol_nonlocal): ...this, and update header comment. Remove language_defn parameter, and replace with uses of `this'. * symtab.h (basic_lookup_symbol_nonlocal): Delete declaration.
This commit is contained in:
parent
ebe2334ee6
commit
a78a19b152
16 changed files with 171 additions and 128 deletions
|
@ -1961,51 +1961,6 @@ rust_operator_check (struct expression *exp, int pos,
|
|||
|
||||
|
||||
|
||||
/* Implementation of la_lookup_symbol_nonlocal for Rust. */
|
||||
|
||||
static struct block_symbol
|
||||
rust_lookup_symbol_nonlocal (const struct language_defn *langdef,
|
||||
const char *name,
|
||||
const struct block *block,
|
||||
const domain_enum domain)
|
||||
{
|
||||
struct block_symbol result = {};
|
||||
|
||||
if (symbol_lookup_debug)
|
||||
{
|
||||
fprintf_unfiltered (gdb_stdlog,
|
||||
"rust_lookup_symbol_non_local"
|
||||
" (%s, %s (scope %s), %s)\n",
|
||||
name, host_address_to_string (block),
|
||||
block_scope (block), domain_name (domain));
|
||||
}
|
||||
|
||||
/* Look up bare names in the block's scope. */
|
||||
std::string scopedname;
|
||||
if (name[cp_find_first_component (name)] == '\0')
|
||||
{
|
||||
const char *scope = block_scope (block);
|
||||
|
||||
if (scope[0] != '\0')
|
||||
{
|
||||
scopedname = std::string (scope) + "::" + name;
|
||||
name = scopedname.c_str ();
|
||||
}
|
||||
else
|
||||
name = NULL;
|
||||
}
|
||||
|
||||
if (name != NULL)
|
||||
{
|
||||
result = lookup_symbol_in_static_block (name, block, domain);
|
||||
if (result.symbol == NULL)
|
||||
result = lookup_global_symbol (name, block, domain);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static const struct exp_descriptor exp_descriptor_rust =
|
||||
{
|
||||
rust_print_subexp,
|
||||
|
@ -2042,7 +1997,6 @@ extern const struct language_data rust_language_data =
|
|||
rust_print_typedef, /* Print a typedef using appropriate syntax */
|
||||
NULL, /* name_of_this */
|
||||
false, /* la_store_sym_names_in_linkage_form_p */
|
||||
rust_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
||||
c_op_print_tab, /* expression operators for printing */
|
||||
1, /* c-style arrays */
|
||||
0, /* String lower bound */
|
||||
|
@ -2147,6 +2101,47 @@ public:
|
|||
{
|
||||
return rust_value_print_inner (val, stream, recurse, options);
|
||||
}
|
||||
|
||||
/* See language.h. */
|
||||
|
||||
struct block_symbol lookup_symbol_nonlocal
|
||||
(const char *name, const struct block *block,
|
||||
const domain_enum domain) const override
|
||||
{
|
||||
struct block_symbol result = {};
|
||||
|
||||
if (symbol_lookup_debug)
|
||||
{
|
||||
fprintf_unfiltered (gdb_stdlog,
|
||||
"rust_lookup_symbol_non_local"
|
||||
" (%s, %s (scope %s), %s)\n",
|
||||
name, host_address_to_string (block),
|
||||
block_scope (block), domain_name (domain));
|
||||
}
|
||||
|
||||
/* Look up bare names in the block's scope. */
|
||||
std::string scopedname;
|
||||
if (name[cp_find_first_component (name)] == '\0')
|
||||
{
|
||||
const char *scope = block_scope (block);
|
||||
|
||||
if (scope[0] != '\0')
|
||||
{
|
||||
scopedname = std::string (scope) + "::" + name;
|
||||
name = scopedname.c_str ();
|
||||
}
|
||||
else
|
||||
name = NULL;
|
||||
}
|
||||
|
||||
if (name != NULL)
|
||||
{
|
||||
result = lookup_symbol_in_static_block (name, block, domain);
|
||||
if (result.symbol == NULL)
|
||||
result = lookup_global_symbol (name, block, domain);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
/* Single instance of the Rust language class. */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue