use brink_syntax::ast::{self, AstNode};
use crate::{Import, ImportItem};
pub(super) fn lower_import(stmt: &ast::ImportStmt) -> Import {
let range = stmt.syntax().text_range();
let module_node = stmt.module();
let module = module_node
.as_ref()
.and_then(ast::ImportModule::name)
.unwrap_or_default();
let module_range = module_node
.as_ref()
.map_or(range, |m| m.syntax().text_range());
let (items, bare) = match stmt.list() {
Some(list) => {
let items = list
.items()
.filter_map(|item| {
item.name().map(|name| ImportItem {
name,
alias: item.alias(),
range: item.syntax().text_range(),
})
})
.collect();
(items, true)
}
None => (Vec::new(), false),
};
Import {
module,
module_range,
items,
bare,
range,
}
}