Capture doxygen comments for namespaces

This commit is contained in:
Dustin Spicuzza 2022-12-09 01:14:40 -05:00
parent dc76328bd5
commit ff645920b8
4 changed files with 46 additions and 2 deletions

View File

@ -404,7 +404,7 @@ class CxxParser:
# TODO: namespace_alias_definition
ns = NamespaceDecl(names, inline)
ns = NamespaceDecl(names, inline, doxygen)
state = self._push_state(NamespaceBlockState, ns)
state.location = location
self.visitor.on_namespace_start(state)

View File

@ -92,6 +92,7 @@ class NamespaceScope:
name: str = ""
inline: bool = False
doxygen: typing.Optional[str] = None
classes: typing.List["ClassScope"] = field(default_factory=list)
enums: typing.List[EnumDecl] = field(default_factory=list)
@ -249,8 +250,9 @@ class SimpleCxxVisitor:
assert ns is not None
# only set inline on inner namespace
# only set inline/doxygen on inner namespace
ns.inline = state.namespace.inline
ns.doxygen = state.namespace.doxygen
self.block = ns
self.namespace = ns

View File

@ -56,6 +56,9 @@ class NamespaceDecl:
names: typing.List[str]
inline: bool = False
#: Documentation if present
doxygen: typing.Optional[str] = None
@dataclass
class DecltypeSpecifier:

View File

@ -290,3 +290,42 @@ def test_doxygen_var_after() -> None:
]
)
)
def test_doxygen_namespace() -> None:
content = """
/**
* x is a mysterious namespace
*/
namespace x {}
/**
* c is also a mysterious namespace
*/
namespace a::b::c {}
"""
data = parse_string(content, cleandoc=True)
assert data == ParsedData(
namespace=NamespaceScope(
namespaces={
"x": NamespaceScope(
name="x", doxygen="/**\n* x is a mysterious namespace\n*/"
),
"a": NamespaceScope(
name="a",
namespaces={
"b": NamespaceScope(
name="b",
namespaces={
"c": NamespaceScope(
name="c",
doxygen="/**\n* c is also a mysterious namespace\n*/",
)
},
)
},
),
}
)
)