1use crate::Result;
6use oxur_lang::{CoreForm, NodeId};
7use std::collections::HashMap;
8
9pub struct Lowerer {
11 #[allow(dead_code)]
12 node_map: HashMap<NodeId, syn::Expr>,
13}
14
15impl Lowerer {
16 pub fn new() -> Self {
17 Self { node_map: HashMap::new() }
18 }
19
20 pub fn lower(&mut self, _forms: Vec<CoreForm>) -> Result<syn::File> {
22 Ok(syn::File { shebang: None, attrs: vec![], items: vec![] })
24 }
25}
26
27impl Default for Lowerer {
28 fn default() -> Self {
29 Self::new()
30 }
31}
32
33#[cfg(test)]
34mod tests {
35 use super::*;
36
37 #[test]
38 fn test_lowerer_creation() {
39 let lowerer = Lowerer::new();
40 assert_eq!(lowerer.node_map.len(), 0);
41 }
42
43 #[test]
44 fn test_lowerer_default() {
45 let lowerer = Lowerer::default();
46 assert_eq!(lowerer.node_map.len(), 0);
47 }
48
49 #[test]
50 fn test_lower_empty() {
51 let mut lowerer = Lowerer::new();
52 let result = lowerer.lower(vec![]);
53 assert!(result.is_ok());
54 let file = result.unwrap();
55 assert_eq!(file.items.len(), 0);
56 }
57
58 #[test]
59 fn test_lower_returns_syn_file() {
60 let mut lowerer = Lowerer::new();
61 let result = lowerer.lower(vec![]);
62 assert!(result.is_ok());
63 let file = result.unwrap();
64 assert!(file.shebang.is_none());
65 assert_eq!(file.attrs.len(), 0);
66 }
67}