diff options
author | Leszek Swirski <leszeks@google.com> | 2018-01-25 16:20:47 +0000 |
---|---|---|
committer | Simon Marchi <simon.marchi@polymtl.ca> | 2018-02-01 22:34:20 -0500 |
commit | 59498c305e6f1db2a1ed8d44cb58f0d24ec092fe (patch) | |
tree | 5d02582d3c31d0ac78156328185204d487ece91f /gdb/testsuite/gdb.cp/filename.exp | |
parent | 17545aa1bfa291def4674c6700c1c7a3575ee5c1 (diff) | |
download | fsf-binutils-gdb-59498c305e6f1db2a1ed8d44cb58f0d24ec092fe.zip fsf-binutils-gdb-59498c305e6f1db2a1ed8d44cb58f0d24ec092fe.tar.gz fsf-binutils-gdb-59498c305e6f1db2a1ed8d44cb58f0d24ec092fe.tar.bz2 |
Do not classify C struct members as a filename
There is existing logic in C/C++ expression parsing to avoid classifying
names as a filename when they are a field on the this object. This
change extends this logic to also avoid classifying names after a
struct-op (-> or .) as a filename, which otherwise causes a syntax
error.
Thus, it is now possible in the file
#include <map>
struct D {
void map();
}
D d;
to call
(gdb) print d.map()
where previously this would have been a syntax error.
Tested on gdb.cp/*.exp
gdb/ChangeLog:
* c-exp.y (lex_one_token, classify_name, yylex): Don't classify
names after a structop as a filename
gdb/testsuite/ChangeLog:
* gdb.cp/filename.cc, gdb.cp/filename.exp: Test that member
functions with the same name as an include file are parsed
correctly.
Diffstat (limited to 'gdb/testsuite/gdb.cp/filename.exp')
-rw-r--r-- | gdb/testsuite/gdb.cp/filename.exp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/gdb/testsuite/gdb.cp/filename.exp b/gdb/testsuite/gdb.cp/filename.exp index 971ffe7..208179e 100644 --- a/gdb/testsuite/gdb.cp/filename.exp +++ b/gdb/testsuite/gdb.cp/filename.exp @@ -26,8 +26,24 @@ if ![runto_main] then { continue } -gdb_breakpoint [gdb_get_line_number "stop here"] -gdb_continue_to_breakpoint "stop here" +gdb_breakpoint [gdb_get_line_number "stop inside C"] +gdb_continue_to_breakpoint "stop inside C" gdb_test "print includefile\[0\]" " = 23" +gdb_test "print this->includefile\[0\]" " = 23" gdb_test "print 'includefile'::some_global" " = 27" + +gdb_breakpoint [gdb_get_line_number "stop inside D"] +gdb_continue_to_breakpoint "stop inside D" + +gdb_test "print includefile()" " = 24" +gdb_test "print this->includefile()" " = 24" +gdb_test "print 'includefile'::some_global" " = 27" + +gdb_breakpoint [gdb_get_line_number "stop outside"] +gdb_continue_to_breakpoint "stop outside" + +gdb_test "print c.includefile\[0\]" " = 23" +gdb_test "print pc->includefile\[0\]" " = 23" +gdb_test "print d.includefile()" " = 24" +gdb_test "print pd->includefile()" " = 24" |