fix: cpp domain parser cannot parse a const type with a modifier. closes #1041

This commit is contained in:
Takayuki Shimizukawa
2012-11-28 15:26:44 +09:00
parent 4e715ff0bf
commit 96779ffed8
2 changed files with 15 additions and 4 deletions

View File

@@ -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

View File

@@ -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