Skip to content

Commit 688f349

Browse files
committed
Support attributes on namespaces
1 parent 3abac6d commit 688f349

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

cxxheaderparser/parser.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,11 @@ def _parse_namespace(
446446

447447
while True:
448448
names.append(tok.value)
449+
450+
atok = self.lex.token_if_in_set(self._attribute_start_tokens)
451+
if atok:
452+
self._consume_attribute(atok)
453+
449454
tok = self._next_token_must_be("DBL_COLON", endtok)
450455
if tok.type == endtok:
451456
break

tests/test_namespaces.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,3 +195,14 @@ def test_ns_alias_global() -> None:
195195
ns_alias=[NamespaceAlias(alias="ANS", names=["::", "my", "ns"])]
196196
)
197197
)
198+
199+
200+
def test_ns_attr() -> None:
201+
content = """
202+
namespace n __attribute__((visibility("hidden"))) {}
203+
"""
204+
data = parse_string(content, cleandoc=True)
205+
206+
assert data == ParsedData(
207+
namespace=NamespaceScope(namespaces={"n": NamespaceScope(name="n")})
208+
)

0 commit comments

Comments
 (0)