[PATCH 29/40] Simplify completion_list_add_name | remove sym_text / sym_text_len

Pedro Alves
2017-06-02T12:31:38Z

sym_text_len existed to strip parameters out of the lookup name. Now
that that's handled by the lookup_name_info objects, the
sym_text/sym_text_len parameters are no longer necessary.

gdb/ChangeLog:
yyyy-mm-dd Pedro Alves <palves@redhat.com>

* ada-lang.c (ada_make_symbol_completion_list): Remove text and
text_len locals and don't pass them down.
* symtab.c (completion_list_add_name): Remove
sym_text/sym_text_len parameters and adjust.
(completion_list_add_symbol, completion_list_add_msymbol)
(completion_list_objc_symbol, completion_list_add_fields)
(add_symtab_completions): Likewise.
(default_collect_symbol_completion_matches_break_on)
(collect_file_symbol_completion_matches): Remove sym_text_len
local and don't pass it down.
* symtab.h (completion_list_add_name): Remove
sym_text/sym_text_len parameters.
---
gdb/ada-lang.c | 18 ++++--------
gdb/symtab.c | 90 +++++++++++++++++++---------------------------------------
gdb/symtab.h | 1 -
3 files changed, 34 insertions(+), 75 deletions(-)

diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 50f7581..11ff719 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -6432,7 +6432,6 @@ ada_collect_symbol_completion_matches (completion_tracker &tracker,
const char *text, const char *word,
enum type_code code)
{
- int text_len;
struct symbol *sym;
struct compunit_symtab *s;
struct minimal_symbol *msymbol;
@@ -6444,10 +6443,7 @@ ada_collect_symbol_completion_matches (completion_tracker &tracker,

gdb_assert (code == TYPE_CODE_UNDEF);

- text_len = strlen (text);
-
- lookup_name_info lookup_name (std::string (text, text_len),
- name_match_type, true);
+ lookup_name_info lookup_name (text, name_match_type, true);

/* First, look at the partial symtab symbols. */
expand_symtabs_matching (NULL,
@@ -6468,8 +6464,7 @@ ada_collect_symbol_completion_matches (completion_tracker &tracker,
completion_list_add_name (tracker,
MSYMBOL_LANGUAGE (msymbol),
MSYMBOL_LINKAGE_NAME (msymbol),
- lookup_name,
- text, text_len, text, word);
+ lookup_name, text, word);
}

/* Search upwards from currently selected frame (so that we can
@@ -6485,8 +6480,7 @@ ada_collect_symbol_completion_matches (completion_tracker &tracker,
completion_list_add_name (tracker,
SYMBOL_LANGUAGE (sym),
SYMBOL_LINKAGE_NAME (sym),
- lookup_name,
- text, text_len, text, word);
+ lookup_name, text, word);
}
}

@@ -6502,8 +6496,7 @@ ada_collect_symbol_completion_matches (completion_tracker &tracker,
completion_list_add_name (tracker,
SYMBOL_LANGUAGE (sym),
SYMBOL_LINKAGE_NAME (sym),
- lookup_name,
- text, text_len, text, word);
+ lookup_name, text, word);
}
}

@@ -6519,8 +6512,7 @@ ada_collect_symbol_completion_matches (completion_tracker &tracker,
completion_list_add_name (tracker,
SYMBOL_LANGUAGE (sym),
SYMBOL_LINKAGE_NAME (sym),
- lookup_name,
- text, text_len, text, word);
+ lookup_name, text, word);
}
}

diff --git a/gdb/symtab.c b/gdb/symtab.c
index 68b8af5..c5cd9ec 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -4819,7 +4819,6 @@ completion_list_add_name (completion_tracker &tracker,
language symbol_language,
const char *symname,
const lookup_name_info &lookup_name,
- const char *sym_text, int sym_text_len,
const char *text, const char *word)
{
completion_match_result &match_res
@@ -4841,23 +4840,23 @@ completion_list_add_name (completion_tracker &tracker,
{
char *newobj;

- if (word == sym_text)
+ if (word == text)
{
newobj = (char *) xmalloc (strlen (symname) + 5);
strcpy (newobj, symname);
}
- else if (word > sym_text)
+ else if (word > text)
{
/* Return some portion of symname. */
newobj = (char *) xmalloc (strlen (symname) + 5);
- strcpy (newobj, symname + (word - sym_text));
+ strcpy (newobj, symname + (word - text));
}
else
{
/* Return some of SYM_TEXT plus symname. */
- newobj = (char *) xmalloc (strlen (symname) + (sym_text - word) + 5);
- strncpy (newobj, word, sym_text - word);
- newobj[sym_text - word] = '\0';
+ newobj = (char *) xmalloc (strlen (symname) + (text - word) + 5);
+ strncpy (newobj, word, text - word);
+ newobj[text - word] = '\0';
strcat (newobj, symname);
}

@@ -4873,12 +4872,11 @@ static void
completion_list_add_symbol (completion_tracker &tracker,
symbol *sym,
const lookup_name_info &lookup_name,
- const char *sym_text, int sym_text_len,
const char *text, const char *word)
{
completion_list_add_name (tracker, SYMBOL_LANGUAGE (sym),
SYMBOL_NATURAL_NAME (sym),
- lookup_name, sym_text, sym_text_len, text, word);
+ lookup_name, text, word);
}

/* completion_list_add_name wrapper for struct minimal_symbol. */
@@ -4887,12 +4885,11 @@ static void
completion_list_add_msymbol (completion_tracker &tracker,
minimal_symbol *sym,
const lookup_name_info &lookup_name,
- const char *sym_text, int sym_text_len,
const char *text, const char *word)
{
completion_list_add_name (tracker, MSYMBOL_LANGUAGE (sym),
MSYMBOL_NATURAL_NAME (sym),
- lookup_name, sym_text, sym_text_len, text, word);
+ lookup_name, text, word);
}

@@ -4903,7 +4900,6 @@ static void
completion_list_objc_symbol (completion_tracker &tracker,
struct minimal_symbol *msymbol,
const lookup_name_info &lookup_name,
- const char *sym_text, int sym_text_len,
const char *text, const char *word)
{
static char *tmp = NULL;
@@ -4918,12 +4914,12 @@ completion_list_objc_symbol (completion_tracker &tracker,
if ((method[0] != '-') && (method[0] != '+'))
return;

- if (sym_text[0] == '[')
+ if (text[0] == '[')
/* Complete on shortened method method. */
completion_list_add_name (tracker, language_objc,
method + 1,
lookup_name,
- sym_text, sym_text_len, text, word);
+ text, word);

while ((strlen (method) + 1) >= tmplen)
{
@@ -4945,12 +4941,10 @@ completion_list_objc_symbol (completion_tracker &tracker,
tmp[category - method] = ' ';
memcpy (tmp + (category - method) + 1, selector, strlen (selector) + 1);
completion_list_add_name (tracker, language_objc, tmp,
- lookup_name,
- sym_text, sym_text_len, text, word);
- if (sym_text[0] == '[')
+ lookup_name, text, word);
+ if (text[0] == '[')
completion_list_add_name (tracker, language_objc, tmp + 1,
- lookup_name,
- sym_text, sym_text_len, text, word);
+ lookup_name, text, word);
}

if (selector != NULL)
@@ -4962,8 +4956,7 @@ completion_list_objc_symbol (completion_tracker &tracker,
*tmp2 = '\0';

completion_list_add_name (tracker, language_objc, tmp,
- lookup_name,
- sym_text, sym_text_len, text, word);
+ lookup_name, text, word);
}
}

@@ -5017,7 +5010,6 @@ static void
completion_list_add_fields (completion_tracker &tracker,
struct symbol *sym,
const lookup_name_info &lookup_name,
- const char *sym_text, int sym_text_len,
const char *text, const char *word)
{
if (SYMBOL_CLASS (sym) == LOC_TYPEDEF)
@@ -5031,8 +5023,7 @@ completion_list_add_fields (completion_tracker &tracker,
if (TYPE_FIELD_NAME (t, j))
completion_list_add_name (tracker, SYMBOL_LANGUAGE (sym),
TYPE_FIELD_NAME (t, j),
- lookup_name,
- sym_text, sym_text_len, text, word);
+ lookup_name, text, word);
}
}

@@ -5042,7 +5033,6 @@ static void
add_symtab_completions (struct compunit_symtab *cust,
completion_tracker &tracker,
const lookup_name_info &lookup_name,
- const char *sym_text, int sym_text_len,
const char *text, const char *word,
enum type_code code)
{
@@ -5065,7 +5055,6 @@ add_symtab_completions (struct compunit_symtab *cust,
&& TYPE_CODE (SYMBOL_TYPE (sym)) == code))
completion_list_add_symbol (tracker, sym,
lookup_name,
- sym_text, sym_text_len,
text, word);
}
}
@@ -5091,8 +5080,6 @@ default_collect_symbol_completion_matches_break_on
struct block_iterator iter;
/* The symbol we are completing on. Points in same buffer as text. */
const char *sym_text;
- /* Length of sym_text. */
- int sym_text_len;
struct cleanup *cleanups;

/* Now look for the symbol we are supposed to complete on. */
@@ -5149,10 +5136,7 @@ default_collect_symbol_completion_matches_break_on
}
}

- sym_text_len = strlen (sym_text);
-
- lookup_name_info lookup_name (std::string (sym_text, sym_text_len),
- name_match_type, true);
+ lookup_name_info lookup_name (sym_text, name_match_type, true);

/* At this point scan through the misc symbol vectors and add each
symbol you find to the list. Eventually we want to ignore
@@ -5166,19 +5150,17 @@ default_collect_symbol_completion_matches_break_on
QUIT;

completion_list_add_msymbol (tracker, msymbol, lookup_name,
- sym_text, sym_text_len,
- text, word);
+ sym_text, word);

completion_list_objc_symbol (tracker, msymbol, lookup_name,
- sym_text, sym_text_len, text,
- word);
+ sym_text, word);
}
}

/* Add completions for all currently loaded symbol tables. */
ALL_COMPUNITS (objfile, cust)
add_symtab_completions (cust, tracker, lookup_name,
- sym_text, sym_text_len, text, word, code);
+ sym_text, word, code);

/* Look through the partial symtabs for all symbols which begin by
matching SYM_TEXT. Expand all CUs that you find to the list. */
@@ -5189,8 +5171,7 @@ default_collect_symbol_completion_matches_break_on
{
add_symtab_completions (symtab,
tracker, lookup_name,
- sym_text, sym_text_len,
- text, word, code);
+ sym_text, word, code);
},
ALL_DOMAIN);

@@ -5212,17 +5193,14 @@ default_collect_symbol_completion_matches_break_on
if (code == TYPE_CODE_UNDEF)
{
completion_list_add_symbol (tracker, sym, lookup_name,
- sym_text, sym_text_len, text,
- word);
+ sym_text, word);
completion_list_add_fields (tracker, sym, lookup_name,
- sym_text, sym_text_len, text,
- word);
+ sym_text, word);
}
else if (SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
&& TYPE_CODE (SYMBOL_TYPE (sym)) == code)
completion_list_add_symbol (tracker, sym, lookup_name,
- sym_text, sym_text_len, text,
- word);
+ sym_text, word);
}

/* Stop when we encounter an enclosing function. Do not stop for
@@ -5240,12 +5218,12 @@ default_collect_symbol_completion_matches_break_on
if (surrounding_static_block != NULL)
ALL_BLOCK_SYMBOLS (surrounding_static_block, iter, sym)
completion_list_add_fields (tracker, sym, lookup_name,
- sym_text, sym_text_len, text, word);
+ sym_text, word);

if (surrounding_global_block != NULL)
ALL_BLOCK_SYMBOLS (surrounding_global_block, iter, sym)
completion_list_add_fields (tracker, sym, lookup_name,
- sym_text, sym_text_len, text, word);
+ sym_text, word);
}

/* Skip macros if we are completing a struct tag -- arguable but
@@ -5261,12 +5239,8 @@ default_collect_symbol_completion_matches_break_on
macro_source_file *,
int)
{
- completion_list_add_name (tracker,
- language_c,
- macro_name,
- lookup_name,
- sym_text, sym_text_len,
- text, word);
+ completion_list_add_name (tracker, language_c, macro_name,
+ lookup_name, sym_text, word);
};

/* Add any macros visible in the default scope. Note that this
@@ -5349,8 +5323,6 @@ collect_file_symbol_completion_matches (completion_tracker &tracker,
{
/* The symbol we are completing on. Points in same buffer as text. */
const char *sym_text;
- /* Length of sym_text. */
- int sym_text_len;

/* Now look for the symbol we are supposed to complete on.
FIXME: This should be language-specific. */
@@ -5398,10 +5370,7 @@ collect_file_symbol_completion_matches (completion_tracker &tracker,
}
}

- sym_text_len = strlen (sym_text);
-
- lookup_name_info lookup_name (std::string (sym_text, sym_text_len),
- name_match_type, true);
+ lookup_name_info lookup_name (sym_text, name_match_type, true);

/* Go through symtabs for SRCFILE and check the externs and statics
for symbols which match. */
@@ -5409,8 +5378,7 @@ collect_file_symbol_completion_matches (completion_tracker &tracker,
{
add_symtab_completions (SYMTAB_COMPUNIT (s),
tracker, lookup_name,
- sym_text, sym_text_len,
- text, word, TYPE_CODE_UNDEF);
+ sym_text, word, TYPE_CODE_UNDEF);
return false;
});
}
diff --git a/gdb/symtab.h b/gdb/symtab.h
index a452804..d68eed8 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -1966,7 +1966,6 @@ void completion_list_add_name (completion_tracker &tracker,
language symbol_language,
const char *symname,
const lookup_name_info &lookup_name,
- const char *sym_text, int sym_text_len,
const char *text, const char *word);

#endif /* !defined(SYMTAB_H) */
--
2.5.5