aldrin_parser/ast/
import_stmt.rs1use super::SchemaName;
2use crate::error::ImportNotFound;
3use crate::grammar::Rule;
4use crate::validate::Validate;
5use crate::warning::UnusedImport;
6use crate::Span;
7use pest::iterators::Pair;
8
9#[derive(Debug, Clone)]
10pub struct ImportStmt {
11 span: Span,
12 schema_name: SchemaName,
13}
14
15impl ImportStmt {
16 pub(crate) fn parse(pair: Pair<Rule>) -> Self {
17 assert_eq!(pair.as_rule(), Rule::import_stmt);
18
19 let span = Span::from_pair(&pair);
20
21 let mut pairs = pair.into_inner();
22 pairs.next().unwrap(); let pair = pairs.next().unwrap();
25 let schema_name = SchemaName::parse(pair);
26
27 Self { span, schema_name }
28 }
29
30 pub(crate) fn validate(&self, validate: &mut Validate) {
31 ImportNotFound::validate(self, validate);
32 UnusedImport::validate(self, validate);
33 }
34
35 pub fn span(&self) -> Span {
36 self.span
37 }
38
39 pub fn schema_name(&self) -> &SchemaName {
40 &self.schema_name
41 }
42}