mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
fix: cpp domain parser cannot parse a const type with a modifier. closes #1041
This commit is contained in:
@@ -672,8 +672,9 @@ class DefinitionParser(object):
|
||||
except ValueError:
|
||||
return False
|
||||
|
||||
def _parse_builtin(self, modifier):
|
||||
path = [modifier]
|
||||
def _parse_builtin(self, modifiers):
|
||||
modifier = modifiers[-1]
|
||||
path = modifiers
|
||||
following = self._modifiers[modifier]
|
||||
while 1:
|
||||
self.skip_ws()
|
||||
@@ -730,9 +731,10 @@ class DefinitionParser(object):
|
||||
# impossible for a template to follow, so what
|
||||
# we do is go to a different function that just
|
||||
# eats types
|
||||
if following is not None:
|
||||
return self._parse_builtin(modifier)
|
||||
modifiers.append(modifier)
|
||||
if following is not None:
|
||||
return self._parse_builtin(modifiers)
|
||||
self.skip_ws()
|
||||
else:
|
||||
self.backout()
|
||||
break
|
||||
|
||||
@@ -43,6 +43,15 @@ def test_type_definitions():
|
||||
x = 'int printf(const char* fmt, ...)'
|
||||
assert unicode(parse('function', x)) == x
|
||||
|
||||
x = 'int foo(const unsigned int j)'
|
||||
assert unicode(parse('function', x)) == x
|
||||
|
||||
x = 'int foo(const unsigned int const j)'
|
||||
assert unicode(parse('function', x)) == x
|
||||
|
||||
x = 'int foo(const int* const ptr)'
|
||||
assert unicode(parse('function', x)) == x
|
||||
|
||||
x = 'std::vector<std::pair<std::string, long long>> module::blah'
|
||||
assert unicode(parse('type_object', x)) == x
|
||||
|
||||
|
||||
Reference in New Issue
Block a user