1mod bind;
2mod collect;
3pub mod descriptor;
4pub mod token;
5
6pub use crate::bind::bind_symbols;
7pub use crate::collect::{
8 apply_symbol_batch, collect_symbols, collect_symbols_batch, CollectedSymbols, CollectionResult,
9 SymbolBatch,
10};
11pub use crate::descriptor::{
12 CallArgument, CallDescriptor, CallTarget, ChainSegment, EnumDescriptor, EnumVariant,
13 EnumVariantField, EnumVariantKind, FnVisibility, FunctionDescriptor, FunctionParameter,
14 StructDescriptor, StructField, StructKind, TypeExpr, VariableDescriptor, VariableKind,
15 VariableScope,
16};
17pub use llmcc_core::{
18 build_llmcc_graph, build_llmcc_ir, print_llmcc_graph, print_llmcc_ir, CompileCtxt,
19 ProjectGraph, ProjectQuery,
20};
21pub use token::LangRust;
22
23use llmcc_core::context::CompileUnit;
24use llmcc_core::lang_def::ParallelSymbolCollect;
25use llmcc_core::symbol::Scope;
26
27impl ParallelSymbolCollect for LangRust {
28 const PARALLEL_SYMBOL_COLLECTION: bool = true;
29 type SymbolBatch = crate::collect::SymbolBatch;
30
31 fn collect_symbol_batch<'tcx>(unit: CompileUnit<'tcx>) -> Self::SymbolBatch {
32 collect_symbols_batch(unit)
33 }
34
35 fn apply_symbol_batch<'tcx>(
36 unit: CompileUnit<'tcx>,
37 globals: &'tcx Scope<'tcx>,
38 batch: Self::SymbolBatch,
39 ) {
40 let _ = apply_symbol_batch(unit, globals, batch);
41 }
42}