Parse namespace alias and emit it

- Fixes #43
This commit is contained in:
Dustin Spicuzza
2023-03-16 18:43:37 -04:00
parent 1aa9e72ca1
commit 2fe350bf35
5 changed files with 79 additions and 3 deletions

View File

@@ -4,6 +4,7 @@ from cxxheaderparser.errors import CxxParseError
from cxxheaderparser.types import (
ForwardDecl,
FundamentalSpecifier,
NamespaceAlias,
NameSpecifier,
PQName,
Token,
@@ -168,3 +169,29 @@ def test_invalid_inline_namespace() -> None:
err = "<str>:1: parse error evaluating 'inline': a nested namespace definition cannot be inline"
with pytest.raises(CxxParseError, match=re.escape(err)):
parse_string(content, cleandoc=True)
def test_ns_alias() -> None:
content = """
namespace ANS = my::ns;
"""
data = parse_string(content, cleandoc=True)
assert data == ParsedData(
namespace=NamespaceScope(
ns_alias=[NamespaceAlias(alias="ANS", names=["my", "ns"])]
)
)
def test_ns_alias_global() -> None:
content = """
namespace ANS = ::my::ns;
"""
data = parse_string(content, cleandoc=True)
assert data == ParsedData(
namespace=NamespaceScope(
ns_alias=[NamespaceAlias(alias="ANS", names=["::", "my", "ns"])]
)
)