Skip to content

Commit a89224e

Browse files
committed
Function lookup, strip more stuff
1 parent 70df3d6 commit a89224e

3 files changed

Lines changed: 33 additions & 1 deletion

File tree

breathe/directives/function.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,10 +136,17 @@ def _parse_args(self, function_description: str) -> Optional[cpp.ASTParametersQu
136136
# strip everything that doesn't contribute to overloading
137137

138138
def stripParamQual(paramQual):
139+
paramQual.exceptionSpec = None # type: ignore
140+
paramQual.final = None # type: ignore
141+
paramQual.override = None # type: ignore
142+
# TODO: strip attrs when Doxygen handles them
143+
paramQual.initializer = None # type: ignore
144+
paramQual.trailingReturn = None # type: ignore
139145
for p in paramQual.args:
140146
if p.arg is None:
141147
assert p.ellipsis
142148
continue
149+
p.arg.init = None # type: ignore
143150
declarator = p.arg.type.decl
144151
while hasattr(declarator, 'next'):
145152
if isinstance(declarator, cpp.ASTDeclaratorParen):
@@ -148,8 +155,8 @@ def stripParamQual(paramQual):
148155
else:
149156
declarator = declarator.next # type: ignore
150157
assert hasattr(declarator, 'declId')
158+
assert isinstance(declarator, cpp.ASTDeclaratorNameParamQual)
151159
declarator.declId = None # type: ignore
152-
p.arg.init = None # type: ignore
153160
stripParamQual(paramQual)
154161
return paramQual
155162

documentation/source/specific.rst

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,22 @@ C++ Function Lookup
241241

242242
.. cpp:namespace:: @ex_specific_cpp_function_lookup
243243

244+
.. doxygenfunction:: fNoexcept()
245+
:project: cpp_function_lookup
246+
.. doxygenfunction:: fFinal()
247+
:project: cpp_function_lookup
248+
.. doxygenfunction:: fOverride()
249+
:project: cpp_function_lookup
250+
251+
This one should actually have ``[[myattr]]`` but Doxygen seems to not put attributes into the XML:
252+
253+
.. doxygenfunction:: fAttr()
254+
:project: cpp_function_lookup
255+
.. doxygenfunction:: fFInit()
256+
:project: cpp_function_lookup
257+
.. doxygenfunction:: fTrailing()
258+
:project: cpp_function_lookup
259+
244260
.. doxygenfunction:: fInit(int)
245261
:project: cpp_function_lookup
246262
.. doxygenfunction:: fPlain(int)

examples/specific/cpp_function_lookup.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
// stuff on the paramQual
2+
void fNoexcept() noexcept;
3+
void fFinal() final;
4+
void fOverride() override;
5+
void fAttr() [[myattr]]; // TODO: Doxygen seems to strip attributes
6+
void fFInit() = default;
7+
auto fTrailing() -> int;
8+
9+
// different parameters
110
void fInit(int arg = 42);
211
void fPlain(int arg);
312
void fPtr(int *arg);

0 commit comments

Comments
 (0)