aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog14
-rw-r--r--gdb/c-exp.y6
-rw-r--r--gdb/completer.c2
-rw-r--r--gdb/expression.h6
-rw-r--r--gdb/go-exp.y4
-rw-r--r--gdb/p-exp.y8
-rw-r--r--gdb/parse.c13
7 files changed, 33 insertions, 20 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index eda155b..cc066c1 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,19 @@
2012-12-07 Tom Tromey <tromey@redhat.com>
+ * expression.h (parse_expression_for_completion): Rename
+ from parse_field_expression.
+ (parse_completion): Rename from in_parse_field.
+ * c-exp.y (lex_one_token): Update.
+ * completer.c (expression_completer): Update.
+ * go-exp.y (lex_one_token): Update.
+ * p-exp.y (yylex): Update.
+ * parse.c (parse_completion): Rename from in_parse_field.
+ (parse_exp_in_context): Update.
+ (parse_expression_for_completion): Rename from
+ parse_field_expression. Update.
+
+2012-12-07 Tom Tromey <tromey@redhat.com>
+
* typeprint.c (_initialize_typeprint): Set completer
for "whatis" and "ptype".
diff --git a/gdb/c-exp.y b/gdb/c-exp.y
index 05d12be..7ae90aa 100644
--- a/gdb/c-exp.y
+++ b/gdb/c-exp.y
@@ -2354,7 +2354,7 @@ lex_one_token (void)
lexptr += 2;
yylval.opcode = tokentab2[i].opcode;
- if (in_parse_field && tokentab2[i].token == ARROW)
+ if (parse_completion && tokentab2[i].token == ARROW)
last_was_structop = 1;
return tokentab2[i].token;
}
@@ -2417,7 +2417,7 @@ lex_one_token (void)
/* Might be a floating point number. */
if (lexptr[1] < '0' || lexptr[1] > '9')
{
- if (in_parse_field)
+ if (parse_completion)
last_was_structop = 1;
goto symbol; /* Nope, must be a symbol. */
}
@@ -2669,7 +2669,7 @@ lex_one_token (void)
if (*tokstart == '$')
return VARIABLE;
- if (in_parse_field && *lexptr == '\0')
+ if (parse_completion && *lexptr == '\0')
saw_name_at_eof = 1;
return NAME;
}
diff --git a/gdb/completer.c b/gdb/completer.c
index 4d6b0d1..7954c2c 100644
--- a/gdb/completer.c
+++ b/gdb/completer.c
@@ -396,7 +396,7 @@ expression_completer (struct cmd_list_element *ignore,
fieldname = NULL;
TRY_CATCH (except, RETURN_MASK_ERROR)
{
- type = parse_field_expression (text, &fieldname);
+ type = parse_expression_for_completion (text, &fieldname);
}
if (except.reason < 0)
return NULL;
diff --git a/gdb/expression.h b/gdb/expression.h
index 3b70ef3..a667845 100644
--- a/gdb/expression.h
+++ b/gdb/expression.h
@@ -98,14 +98,14 @@ struct expression
extern struct expression *parse_expression (char *);
-extern struct type *parse_field_expression (char *, char **);
+extern struct type *parse_expression_for_completion (char *, char **);
extern struct expression *parse_exp_1 (char **, CORE_ADDR pc,
const struct block *, int);
/* For use by parsers; set if we want to parse an expression and
- attempt to complete a field name. */
-extern int in_parse_field;
+ attempt completion. */
+extern int parse_completion;
/* The innermost context required by the stack and register variables
we've encountered so far. To use this, set it to NULL, then call
diff --git a/gdb/go-exp.y b/gdb/go-exp.y
index 18669fc..ed403d1 100644
--- a/gdb/go-exp.y
+++ b/gdb/go-exp.y
@@ -1124,7 +1124,7 @@ lex_one_token (void)
/* Might be a floating point number. */
if (lexptr[1] < '0' || lexptr[1] > '9')
{
- if (in_parse_field)
+ if (parse_completion)
last_was_structop = 1;
goto symbol; /* Nope, must be a symbol. */
}
@@ -1311,7 +1311,7 @@ lex_one_token (void)
if (*tokstart == '$')
return DOLLAR_VARIABLE;
- if (in_parse_field && *lexptr == '\0')
+ if (parse_completion && *lexptr == '\0')
saw_name_at_eof = 1;
return NAME;
}
diff --git a/gdb/p-exp.y b/gdb/p-exp.y
index 5d344a4..4c0cc57 100644
--- a/gdb/p-exp.y
+++ b/gdb/p-exp.y
@@ -1237,7 +1237,7 @@ yylex (void)
/* Might be a floating point number. */
if (lexptr[1] < '0' || lexptr[1] > '9')
{
- if (in_parse_field)
+ if (parse_completion)
last_was_structop = 1;
goto symbol; /* Nope, must be a symbol. */
}
@@ -1529,7 +1529,7 @@ yylex (void)
if (search_field && current_type)
is_a_field = (lookup_struct_elt_type (current_type, tmp, 1) != NULL);
- if (is_a_field || in_parse_field)
+ if (is_a_field || parse_completion)
sym = NULL;
else
sym = lookup_symbol (tmp, expression_context_block,
@@ -1544,7 +1544,7 @@ yylex (void)
}
if (search_field && current_type)
is_a_field = (lookup_struct_elt_type (current_type, tmp, 1) != NULL);
- if (is_a_field || in_parse_field)
+ if (is_a_field || parse_completion)
sym = NULL;
else
sym = lookup_symbol (tmp, expression_context_block,
@@ -1572,7 +1572,7 @@ yylex (void)
}
if (search_field && current_type)
is_a_field = (lookup_struct_elt_type (current_type, tmp, 1) != NULL);
- if (is_a_field || in_parse_field)
+ if (is_a_field || parse_completion)
sym = NULL;
else
sym = lookup_symbol (tmp, expression_context_block,
diff --git a/gdb/parse.c b/gdb/parse.c
index 0392c6a..984c0d2 100644
--- a/gdb/parse.c
+++ b/gdb/parse.c
@@ -81,9 +81,8 @@ char *prev_lexptr;
int paren_depth;
int comma_terminates;
-/* True if parsing an expression to find a field reference. This is
- only used by completion. */
-int in_parse_field;
+/* True if parsing an expression to attempt completion. */
+int parse_completion;
/* The index of the last struct expression directly before a '.' or
'->'. This is set when parsing and is only used when completing a
@@ -1191,7 +1190,7 @@ parse_exp_in_context (char **stringptr, CORE_ADDR pc, const struct block *block,
}
if (except.reason < 0)
{
- if (! in_parse_field)
+ if (! parse_completion)
{
xfree (expout);
throw_exception (except);
@@ -1245,7 +1244,7 @@ parse_expression (char *string)
*NAME must be freed by the caller. */
struct type *
-parse_field_expression (char *string, char **name)
+parse_expression_for_completion (char *string, char **name)
{
struct expression *exp = NULL;
struct value *val;
@@ -1254,10 +1253,10 @@ parse_field_expression (char *string, char **name)
TRY_CATCH (except, RETURN_MASK_ERROR)
{
- in_parse_field = 1;
+ parse_completion = 1;
exp = parse_exp_in_context (&string, 0, 0, 0, 0, &subexp);
}
- in_parse_field = 0;
+ parse_completion = 0;
if (except.reason < 0 || ! exp)
return NULL;
if (expout_last_struct == -1)