1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
// Copyright Two Neutron Stars Incorporated and contributors
// SPDX-License-Identifier: BlueOak-1.0.0
//! # symbolique
//!
//! Generic, extensible symbol table pipeline for compilers and LSPs.
//!
//! ## Partition-Based Storage
//!
//! Symbols are stored in Laburnum partitions (ADR003):
//!
//! ```text
//! Stage 1: File → Symbols (CAS shapes) + FileSymbols (path index)
//! Stage 2: Linked → LinkedSymbols + LinkedSymbolIndex
//! Stage 3: Merged → MergedSymbols + MergedSymbolIndex
//! Stage 4: Resolved → SymbolResolution (reference mappings)
//! ```
//!
//! ## Writing Symbols
//!
//! Use the [`SymboliqueWriteExt`] extension trait to write symbols during
//! parsing. This is the **only** supported way to write symbols to partitions.
//!
//! ```ignore
//! use symbolique::SymboliqueWriteExt;
//!
//! fn build_symbols<P>(writer: &mut PartitionWriteContextRef<'_, P>)
//! where
//! P: Partitions,
//! P::Stores: HasPartition<Symbols<MyValue, MyIdent, String>>
//! + HasPartition<FileSymbols<MyValue, MyIdent, String>>,
//! {
//! let handle = writer.write_symbol_definition::<MyValue, MyIdent, String>(
//! "file|fn|my_func".to_string(),
//! span,
//! ident,
//! Some(value),
//! SymbolVisibility::Public,
//! );
//! }
//! ```
//!
//! The extension trait methods:
//! - Store symbol shapes in the `Symbols` partition (content-addressed)
//! - Create index entries in `FileSymbols` (path-keyed with spans)
//! - Return `RecordHandle<Symbols>` for linking to LSP records
pub use ;
pub
tracer!;