Chris Pickel avatar Chris Pickel committed e8eba1f

Support varargs in C++ function signatures.

Comments (0)

Files changed (2)

sphinx/domains/cpp.py

                     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()

tests/test_cpp_domain.py

     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
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.