C++, fix parsing of function types in other types.

Let all kinds of function parameters be allowed to have a name.
Fixes michaeljones/breathe#267.
This commit is contained in:
Jakob Lykke Andersen 2016-06-16 10:54:16 +09:00
parent 4cf78e608e
commit 65dddfcd69
2 changed files with 8 additions and 4 deletions

View File

@ -3011,10 +3011,9 @@ class DefinitionParser(object):
self.fail('Expected ")" after "..." in '
'parameters_and_qualifiers.')
break
if paramMode == 'function':
arg = self._parse_type_with_init(outer=None, named='single')
else:
arg = self._parse_type(named=False)
# note: it seems that function arguments can always sbe named,
# even in function pointers and similar.
arg = self._parse_type_with_init(outer=None, named='single')
# TODO: parse default parameters # TODO: didn't we just do that?
args.append(ASTFunctinoParameter(arg))

View File

@ -132,6 +132,11 @@ def test_type_definitions():
check('type', 'A = B', None, '1A')
# from breathe#267 (named function parameters for function pointers
check('type', 'void (*gpio_callback_t)(struct device *port, uint32_t pin)',
'gpio_callback_t', '15gpio_callback_t')
check('type', 'void (*f)(std::function<void(int i)> g)', 'f', '1f')
def test_member_definitions():
check('member', ' const std::string & name = 42',