diff options
author | Tom Tromey <tromey@redhat.com> | 2008-06-06 20:58:08 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2008-06-06 20:58:08 +0000 |
commit | 96d06332153b28d32d3b0a1d65fa88d1f5d911d7 (patch) | |
tree | 9c14d6a1bdbdd9e2df41cf2a0e947e17d96ff3a3 /gdb/testsuite | |
parent | 17db8ecec884aa520424ac2955ae1b2b3cba3a63 (diff) | |
download | gdb-96d06332153b28d32d3b0a1d65fa88d1f5d911d7.tar.gz |
gdb
* value.h (evaluate_subexpression_type, extract_field_op):
Declare.
* printcmd.c (_initialize_printcmd): Use expression_completer for
'p', 'inspect', 'call'.
* parser-defs.h (parse_field_expression): Declare.
* parse.c: Include exceptions.h.
(in_parse_field, expout_last_struct): New globals.
(mark_struct_expression): New function.
(prefixify_expression): Return int.
(prefixify_subexp): Return int. Use expout_last_struct.
(parse_exp_1): Update.
(parse_exp_in_context): Add 'out_subexp' argument. Handle
in_parse_field.
(parse_field_expression): New function.
* expression.h (parse_field_expression): Declare.
(in_parse_field): Likewise.
* eval.c (evaluate_subexpression_type): New function.
(extract_field_op): Likewise.
* completer.h (expression_completer): Declare.
* completer.c (expression_completer): New function.
(count_struct_fields, add_struct_fields): New functions.
* c-exp.y (yyparse): Redefine.
(COMPLETE): New token.
(exp): New productions.
(saw_name_at_eof, last_was_structop): New globals.
(yylex): Return COMPLETE when needed. Recognize in_parse_field.
(c_parse): New function.
* breakpoint.c (_initialize_breakpoint): Use expression_completer
for watch, awatch, and rwatch.
* Makefile.in (parse.o): Depend on exceptions_h.
gdb/testsuite
* gdb.base/break1.c (struct some_struct): New struct.
(values): New global.
* gdb.base/completion.exp: Add field name completion test.
gdb/doc
* gdb.texinfo (Completion): Add field name example.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/break1.c | 9 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/completion.exp | 16 |
3 files changed, 31 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 917d9302463..ef42b4d4f72 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2008-06-06 Tom Tromey <tromey@redhat.com> + + * gdb.base/break1.c (struct some_struct): New struct. + (values): New global. + * gdb.base/completion.exp: Add field name completion test. + 2008-06-06 Paul Pluzhnikov <ppluzhnikov@google.com> * gdb.cp/call-c.exp: Test for incorrect handling of reference diff --git a/gdb/testsuite/gdb.base/break1.c b/gdb/testsuite/gdb.base/break1.c index 3272cbd6a00..9cbcd3036e8 100644 --- a/gdb/testsuite/gdb.base/break1.c +++ b/gdb/testsuite/gdb.base/break1.c @@ -41,3 +41,12 @@ int marker2 (a) int a; { return (1); } /* set breakpoint 9 here */ void marker3 (a, b) char *a, *b; {} /* set breakpoint 18 here */ void marker4 (d) long d; {} /* set breakpoint 13 here */ #endif + +/* A structure we use for field name completion tests. */ +struct some_struct +{ + int a_field; + int b_field; +}; + +struct some_struct values[50]; diff --git a/gdb/testsuite/gdb.base/completion.exp b/gdb/testsuite/gdb.base/completion.exp index 09f04dfeaa2..79f588b8aab 100644 --- a/gdb/testsuite/gdb.base/completion.exp +++ b/gdb/testsuite/gdb.base/completion.exp @@ -637,6 +637,22 @@ gdb_expect { timeout { fail "(timeout) complete (2) 'p no_var_named_this-'" } } +send_gdb "p values\[0\].a\t" +sleep 3 +gdb_expect { + -re "^p values.0..a_field $"\ + { send_gdb "\n" + sleep 1 + gdb_expect { + -re "^.* = 0.*$gdb_prompt $"\ + { pass "complete 'p values\[0\].a'"} + -re ".*$gdb_prompt $" { fail "complete 'p values\[0\].a'"} + timeout {fail "(timeout) complete 'p values\[0\].a'"} + } + } + -re ".*$gdb_prompt $" { fail "complete 'p values\[0\].a'" } + timeout { fail "(timeout) complete 'p values\[0\].a' 2" } + } # The following tests used to simply try to complete `${objdir}/file', # and so on. The problem is that ${objdir} can be very long; the |