summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Pickel <sfiera@gmail.com>2011-04-19 22:22:33 -0400
committerChris Pickel <sfiera@gmail.com>2011-04-19 22:22:33 -0400
commit0e589964899503542455e46f063c2aa23043e838 (patch)
tree41d63c1cc51a20a7d9c0eb8a1426dbd2ddcc6104
parentb89dc43f76adb5af0c06672bf093747f04cc2f0f (diff)
downloadsphinx-0e589964899503542455e46f063c2aa23043e838.tar.gz
Support varargs in C++ function signatures.
-rw-r--r--sphinx/domains/cpp.py7
-rw-r--r--tests/test_cpp_domain.py3
2 files changed, 10 insertions, 0 deletions
diff --git a/sphinx/domains/cpp.py b/sphinx/domains/cpp.py
index 5465c91f..2a411740 100644
--- a/sphinx/domains/cpp.py
+++ b/sphinx/domains/cpp.py
@@ -712,6 +712,13 @@ class DefinitionParser(object):
self.fail('expected comma between arguments')
self.skip_ws()
+ if self.skip_string('...'):
+ args.append(ArgumentDefExpr(None, '...', None))
+ if self.skip_string(')'):
+ break
+ else:
+ self.fail('expected closing parenthesis after ellipses')
+
argtype = self._parse_type()
argname = default = None
self.skip_ws()
diff --git a/tests/test_cpp_domain.py b/tests/test_cpp_domain.py
index 296de1c8..84649fd1 100644
--- a/tests/test_cpp_domain.py
+++ b/tests/test_cpp_domain.py
@@ -37,6 +37,9 @@ def test_type_definitions():
x = 'explicit module::myclass::foo::foo()'
assert unicode(parse('function', x)) == x
+ x = 'int printf(const char* fmt, ...)'
+ assert unicode(parse('function', x)) == x
+
x = 'std::vector<std::pair<std::string, long long>> module::blah'
assert unicode(parse('type_object', x)) == x