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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
//! # Error Handling for the Macro Host
//!
//! This module provides error types and a `Result` type alias for macro
//! operations. All errors in the macro host system flow through [`MacroError`].
//!
//! ## Error Categories
//!
//! - **Registry errors**: Macro not found, registration failures
//! - **Configuration errors**: Invalid config files, missing options
//! - **Execution errors**: Macro panics, invalid output
//! - **Compatibility errors**: ABI version mismatches
//! - **I/O errors**: File read/write failures
//! - **Serialization errors**: JSON parsing failures
//!
//! ## Error Handling Patterns
//!
//! ```rust,no_run
//! use macroforge_ts::host::{MacroExpander, MacroError, Result};
//!
//! fn process_file(code: &str) -> Result<String> {
//! let expander = MacroExpander::new()?;
//!
//! // expand_source returns Result<MacroExpansion, MacroError>
//! match expander.expand_source(code, "file.ts") {
//! Ok(expansion) => Ok(expansion.code),
//! Err(MacroError::MacroNotFound { module, name }) => {
//! eprintln!("Unknown macro: {}::{}", module, name);
//! Err(MacroError::MacroNotFound { module, name })
//! }
//! Err(e) => Err(e),
//! }
//! }
//! ```
use Error;
/// A specialized `Result` type for macro operations.
///
/// This type alias is used throughout the macro host for functions
/// that can fail with a [`MacroError`].
///
/// # Example
///
/// ```rust,no_run
/// use macroforge_ts::host::Result;
///
/// fn my_function() -> Result<String> {
/// // This can return any MacroError variant
/// Ok("success".to_string())
/// }
/// ```
pub type Result<T> = Result;
/// Errors that can occur during macro operations.
///
/// This enum covers all possible failure modes in the macro host system,
/// from registry lookups to macro execution to I/O operations.
///
/// # Error Recovery
///
/// Most errors are recoverable at the file level - a single file's failure
/// should not prevent other files from being processed. The macro expander
/// collects diagnostics for non-fatal errors and continues processing.
///
/// # Display
///
/// All variants implement `Display` through `thiserror`, providing
/// human-readable error messages suitable for end users.