use alloc::string::String;
use crate::syntax::SyntaxGraphArgs;
use crate::syntax::SyntaxNode;
use crate::NodeId;
pub struct ImportElement {
pub expression: Option<String>,
pub alias: Option<String>,
pub method_name: Option<String>,
pub corrected_n_id: Option<NodeId>,
}
impl ImportElement {
fn node(&self) -> SyntaxNode {
SyntaxNode::Import {
expression: self.expression.clone(),
alias: self.alias.clone(),
method_name: self.method_name.clone(),
import_type: None,
}
}
}
#[allow(
dead_code,
reason = "wired when a consuming language reader lands, #26623"
)]
pub fn build_import_statement_node(
args: &mut SyntaxGraphArgs<'_>,
n_id: NodeId,
imported_elements: &[ImportElement],
) -> NodeId {
if let [element] = imported_elements {
args.syntax_graph.add_node(n_id, element.node());
} else {
args.syntax_graph.add_node(
n_id,
SyntaxNode::Import {
expression: None,
alias: None,
method_name: None,
import_type: Some(String::from("multiple_import")),
},
);
for element in imported_elements {
if let Some(corrected_n_id) = element.corrected_n_id {
args.syntax_graph.add_node(corrected_n_id, element.node());
args.syntax_graph.add_ast_edge(n_id, corrected_n_id);
}
}
}
n_id
}