]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
Canonicalize conversion operators
authorKeith Seitz <keiths@redhat.com>
Wed, 18 Oct 2017 18:05:45 +0000 (11:05 -0700)
committerKeith Seitz <keiths@redhat.com>
Wed, 18 Oct 2017 18:26:02 +0000 (11:26 -0700)
commitc8ba13ad37c98262b94f99cc4f84ac0066c48cc2
tree7c6f2cf2c229f58fa48e034cde0ef4f4e6abce27
parent3753468682a9c7982b6eba0fca58fbfc1cd5b9fb
Canonicalize conversion operators

Consider a conversion operator such as:

operator foo const* const* ();

There are two small parser problems, highlighted by this test:

(gdb) p operator foo const* const*
There is no field named operatorfoo const* const *

GDB is looking up the symbol "operatorfoo const* const*" -- it is missing a
space between the keyword "operator" and the type name "foo const* const*".

Additionally, this input of the user-defined type needs to be canonicalized
so that different "spellings" of the type are recognized:

(gdb) p operator const foo* const *
There is no field named operator const foo* const *

gdb/ChangeLog:

* c-exp.y (oper): Canonicalize conversion operators of user-defined
types.
Add whitespace to front of type name.

gdb/testsuite/ChangeLog:

* gdb.cp/cpexprs.cc (base) <operator fluff const* const*>: New
method.
(main): Call it.
* gdb.cp/cpexprs.exp: Add new conversion operator to test matrix.
Add additional user-defined conversion operator tests.
gdb/ChangeLog
gdb/c-exp.y
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.cp/cpexprs.cc
gdb/testsuite/gdb.cp/cpexprs.exp