Add support for inline namespaces
This commit is contained in:
@@ -284,6 +284,7 @@ class CxxParser:
|
||||
"alignas": self._consume_attribute_specifier_seq,
|
||||
"extern": self._parse_extern,
|
||||
"friend": self._parse_friend_decl,
|
||||
"inline": self._parse_inline,
|
||||
"namespace": self._parse_namespace,
|
||||
"private": self._process_access_specifier,
|
||||
"protected": self._process_access_specifier,
|
||||
@@ -398,6 +399,9 @@ class CxxParser:
|
||||
|
||||
tok = self._next_token_must_be("NAME")
|
||||
|
||||
if inline and len(names) > 1:
|
||||
raise CxxParseError("a nested namespace definition cannot be inline")
|
||||
|
||||
# TODO: namespace_alias_definition
|
||||
|
||||
ns = NamespaceDecl(names, inline)
|
||||
|
||||
@@ -91,6 +91,7 @@ class NamespaceScope:
|
||||
"""
|
||||
|
||||
name: str = ""
|
||||
inline: bool = False
|
||||
|
||||
classes: typing.List["ClassScope"] = field(default_factory=list)
|
||||
enums: typing.List[EnumDecl] = field(default_factory=list)
|
||||
@@ -248,6 +249,9 @@ class SimpleCxxVisitor:
|
||||
|
||||
assert ns is not None
|
||||
|
||||
# only set inline on inner namespace
|
||||
ns.inline = state.namespace.inline
|
||||
|
||||
self.block = ns
|
||||
self.namespace = ns
|
||||
|
||||
|
||||
Reference in New Issue
Block a user