This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH v4] Do not classify C struct members as a filename
- From: Simon Marchi <simon dot marchi at polymtl dot ca>
- To: Leszek Swirski <leszeks at google dot com>, gdb-patches at sourceware dot org
- Cc: Tom Tromey <tom at tromey dot com>
- Date: Thu, 1 Feb 2018 22:35:41 -0500
- Subject: Re: [PATCH v4] Do not classify C struct members as a filename
- Authentication-results: sourceware.org; auth=none
- References: <87zi52gc8u.fsf@tromey.com> <20180125162047.126498-1-leszeks@google.com>
On 2018-01-25 11:20 AM, Leszek Swirski wrote:
> 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.
> ---
>
> Fix completion token to only appear on completion.
>
> gdb/ChangeLog | 5 +++++
> gdb/c-exp.y | 45 +++++++++++++++++++++------------------
> gdb/testsuite/ChangeLog | 6 ++++++
> gdb/testsuite/gdb.cp/filename.cc | 22 ++++++++++++++++++-
> gdb/testsuite/gdb.cp/filename.exp | 20 +++++++++++++++--
> 5 files changed, 74 insertions(+), 24 deletions(-)
Thanks for the update, I have pushed it.
Simon