Capture doxygen comments for namespaces
This commit is contained in:
parent
dc76328bd5
commit
ff645920b8
@ -404,7 +404,7 @@ class CxxParser:
|
|||||||
|
|
||||||
# TODO: namespace_alias_definition
|
# TODO: namespace_alias_definition
|
||||||
|
|
||||||
ns = NamespaceDecl(names, inline)
|
ns = NamespaceDecl(names, inline, doxygen)
|
||||||
state = self._push_state(NamespaceBlockState, ns)
|
state = self._push_state(NamespaceBlockState, ns)
|
||||||
state.location = location
|
state.location = location
|
||||||
self.visitor.on_namespace_start(state)
|
self.visitor.on_namespace_start(state)
|
||||||
|
@ -92,6 +92,7 @@ class NamespaceScope:
|
|||||||
|
|
||||||
name: str = ""
|
name: str = ""
|
||||||
inline: bool = False
|
inline: bool = False
|
||||||
|
doxygen: typing.Optional[str] = None
|
||||||
|
|
||||||
classes: typing.List["ClassScope"] = field(default_factory=list)
|
classes: typing.List["ClassScope"] = field(default_factory=list)
|
||||||
enums: typing.List[EnumDecl] = field(default_factory=list)
|
enums: typing.List[EnumDecl] = field(default_factory=list)
|
||||||
@ -249,8 +250,9 @@ class SimpleCxxVisitor:
|
|||||||
|
|
||||||
assert ns is not None
|
assert ns is not None
|
||||||
|
|
||||||
# only set inline on inner namespace
|
# only set inline/doxygen on inner namespace
|
||||||
ns.inline = state.namespace.inline
|
ns.inline = state.namespace.inline
|
||||||
|
ns.doxygen = state.namespace.doxygen
|
||||||
|
|
||||||
self.block = ns
|
self.block = ns
|
||||||
self.namespace = ns
|
self.namespace = ns
|
||||||
|
@ -56,6 +56,9 @@ class NamespaceDecl:
|
|||||||
names: typing.List[str]
|
names: typing.List[str]
|
||||||
inline: bool = False
|
inline: bool = False
|
||||||
|
|
||||||
|
#: Documentation if present
|
||||||
|
doxygen: typing.Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class DecltypeSpecifier:
|
class DecltypeSpecifier:
|
||||||
|
@ -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*/",
|
||||||
|
)
|
||||||
|
},
|
||||||
|
)
|
||||||
|
},
|
||||||
|
),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user