Fix accessing a function's fields (parameters) from Python (PR 18073)

Since 7.4, gdb doesn't allow calling .fields() on a function type, even
though the documentation states it should return a list corresponding to
the function's parameters.  This patch restores the intended behaviour
and adds a test for it.

Reg-tested on Arch Linux x86-64.

gdb/ChangeLog:

	PR python/18073
	* python/py-type.c (typy_get_composite): Allow returning a
	function type.

gdb/testsuite/ChangeLog:

	PR python/18073
	* gdb.python/py-type.c (C::a_method): New.
	(C::a_const_method): New.
	(C::a_static_method): New.
	(a_function): New.
	* gdb.python/py-type.exp (test_fields): Test getting fields
	from function and method.
This commit is contained in:
Simon Marchi 2015-10-21 15:57:22 -04:00
parent 3f2f83ddcb
commit bed91f4da2
5 changed files with 75 additions and 8 deletions

View file

@ -495,10 +495,11 @@ typy_get_composite (struct type *type)
exception. */
if (TYPE_CODE (type) != TYPE_CODE_STRUCT
&& TYPE_CODE (type) != TYPE_CODE_UNION
&& TYPE_CODE (type) != TYPE_CODE_ENUM)
&& TYPE_CODE (type) != TYPE_CODE_ENUM
&& TYPE_CODE (type) != TYPE_CODE_FUNC)
{
PyErr_SetString (PyExc_TypeError,
"Type is not a structure, union, or enum type.");
"Type is not a structure, union, enum, or function type.");
return NULL;
}