Coverage for src/renaissance/integrations/clang/predicates.py: 100%
21 statements
« prev ^ index » next coverage.py v7.16.1, created at 2026-10-02 13:12 +0000
« prev ^ index » next coverage.py v7.16.1, created at 2026-10-02 13:12 +0000
1"""AI: Predicate helpers for identifying specific Clang AST node kinds."""
3from renaissance.syntax_tree.node_protocol import NodeProtocol
5TYPE_REFERENCE_KINDS = frozenset({"TypeRef", "TYPE_REF", "type_identifier"})
6DECLARATION_REFERENCE_KINDS = frozenset({"DeclRefExpr", "DECL_REF_EXPR"})
7COMPOUND_STATEMENT_KINDS = frozenset({"CompoundStmt", "COMPOUND_STMT"})
8MACRO_DEFINITION_KINDS = frozenset({"MacroDefinition", "MACRO_DEFINITION"})
9METHOD_KINDS = frozenset({"CXXMethodDecl", "CXX_METHOD"})
10CONSTRUCTOR_KINDS = frozenset({"CXXConstructorDecl", "CXX_CONSTRUCTOR"})
13def is_clang_kind(node: NodeProtocol, *parser_kinds: str) -> bool:
14 """AI: Return True if node's parser_kind matches one of the given kind strings."""
15 return node.parser_kind in parser_kinds
18def is_clang_type_reference(node: NodeProtocol) -> bool:
19 """AI: Return True if node is a Clang type-reference node."""
20 return node.parser_kind in TYPE_REFERENCE_KINDS
23def is_clang_declaration_reference(node: NodeProtocol) -> bool:
24 """AI: Return True if node is a Clang declaration-reference node."""
25 return node.parser_kind in DECLARATION_REFERENCE_KINDS
28def is_clang_compound_statement(node: NodeProtocol) -> bool:
29 """AI: Return True if node is a Clang compound statement (block)."""
30 return node.parser_kind in COMPOUND_STATEMENT_KINDS
33def is_clang_macro_definition(node: NodeProtocol) -> bool:
34 """AI: Return True if node is a Clang macro definition."""
35 return node.parser_kind in MACRO_DEFINITION_KINDS
38def is_clang_method(node: NodeProtocol) -> bool:
39 """AI: Return True if node is a Clang C++ method declaration."""
40 return node.parser_kind in METHOD_KINDS
43def is_clang_constructor(node: NodeProtocol) -> bool:
44 """AI: Return True if node is a Clang C++ constructor declaration."""
45 return node.parser_kind in CONSTRUCTOR_KINDS