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

1"""AI: Predicate helpers for identifying specific Clang AST node kinds.""" 

2 

3from renaissance.syntax_tree.node_protocol import NodeProtocol 

4 

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"}) 

11 

12 

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 

16 

17 

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 

21 

22 

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 

26 

27 

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 

31 

32 

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 

36 

37 

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 

41 

42 

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