Skip to main content

ryo_analysis/query/
mod.rs

1//! Query module - Code graph and query infrastructure.
2//!
3//! Provides:
4//! - `CodeGraphV2`: Symbol relationship graph (DoD-based, petgraph-free)
5//! - `GraphBuilderV2`: Build CodeGraphV2 from parsed code
6//! - `QueryBuilder`: Fluent query DSL
7//! - `DataFlowGraphV2`: Data flow analysis (DoD-based, String-free)
8//! - `DataFlowBuilderWorkspace`: Build DataFlowGraphV2 from parsed code
9//! - `TypeFlowGraphV2`: Type relationship analysis (V2, DoD-based)
10//! - `SpecFlowGraphV2`: Domain semantics analysis (V2, DoD-based)
11//! - `BorrowTrackerV2`: Lightweight borrow state tracking (VarId-based)
12
13mod borrow_v2;
14mod builder_dataflow_v2;
15mod builder_graph_v2;
16mod builder_typeflow_v2;
17mod dataflow_v2;
18mod derive_index;
19mod dsl;
20mod graph_v2;
21pub mod index_vec;
22mod lock_analyzer_v2;
23mod lock_v2;
24mod reference_integrity;
25mod specflow_common;
26mod specflow_v2;
27mod std_impls;
28mod type_alias_registry;
29mod type_impact;
30mod typeflow_v2;
31mod unused_symbol;
32mod var_id;
33
34// Borrow V2 (VarId-based, for DataFlowGraphV2)
35pub use borrow_v2::{
36    ActiveBorrowV2, BorrowAnalysis, BorrowConflict, BorrowKind, BorrowStateV2, BorrowTrackerV2,
37    MoveError,
38};
39pub use builder_dataflow_v2::DataFlowBuilderWorkspace;
40pub use builder_graph_v2::GraphBuilderV2;
41pub use builder_typeflow_v2::TypeFlowBuilderV2;
42pub use derive_index::{DeriveIndex, DeriveIndexStats};
43// DataFlow V2 (DoD-based, String-free)
44pub use dataflow_v2::{
45    DataFlowGraphV2, DataFlowStats, FlowChain, FlowData, FlowEdge, FlowEdgeData, FlowId, FlowKind,
46    FlowStep, Guard, GuardKind, ScopeData, ScopeId, ScopeKind, VarData, VarKind, VarNode,
47};
48pub use dsl::QueryBuilder;
49// CodeGraph V2 (DoD-based, petgraph-free)
50pub use graph_v2::{
51    ChainDirection, ChainNode, ChainResult, CodeEdgeV2, CodeGraphV2, EdgeData, EdgeId,
52    MatchExprDataV2, MatchExprId,
53};
54// Lock V2 (VarId-based, for DataFlowGraphV2)
55pub use lock_analyzer_v2::{LockGranularityAnalyzerV2, LockStatsV2};
56// Reference integrity analysis
57pub use lock_v2::{
58    AccessKind, CriticalSectionV2, FieldAccessV2, LockAcquisitionV2, LockSuggestion, LockTrackerV2,
59    LockType,
60};
61pub use reference_integrity::{
62    ReferenceIntegrityChecker, ReferenceIntegrityIssue, ReferenceIntegrityResult,
63};
64// TypeFlow V2 (DoD-based, String-free)
65pub use typeflow_v2::{
66    DefinitionData, GenericArgData, LookupTable, NodeKind, RefKind, TraitBoundData, TypeDefKind,
67    TypeFlowGraphV2, TypeImpactV2, TypeNodeId, UsageContext, UsageData,
68};
69// SpecFlow shared types
70pub use specflow_common::{CommentDirective, ConstraintKind, IntentKind, SpecSource};
71// SpecFlow V2 (DoD-based, SymbolId-based)
72pub use specflow_v2::{
73    ConstraintData, GroupData, IntentData, SpecAliasData, SpecFlowBuilderV2, SpecFlowGraphV2,
74    SpecLookupTable, SpecNodeId, SpecNodeKind,
75};
76// Std library trait implementation cache
77pub use std_impls::StdImplCache;
78pub use type_alias_registry::{
79    SpecAliasInfo, TypeAliasEntry, TypeAliasRegistry, TypeAliasRegistryBuilder,
80};
81// Type impact analysis
82pub use type_impact::{TypeImpactChecker, TypeImpactIssue, TypeImpactResult};
83// Unused symbol analysis
84pub use unused_symbol::{UnusedSymbol, UnusedSymbolChecker, UnusedSymbolResult};
85// VarId (internal variable identifier for DataFlowGraph)
86pub use var_id::{VarId, VarSymbolMapping};