Pub import

This commit is contained in:
Louis Pilfold 2023-10-06 13:48:42 +01:00
parent c858574ce3
commit 8800e1892e
4 changed files with 16 additions and 3 deletions

View File

@ -777,13 +777,14 @@ fn record_imported_items_for_use_detection<A>(
environment: &Environment<'_>, environment: &Environment<'_>,
) -> Result<TypedDefinition, Error> { ) -> Result<TypedDefinition, Error> {
let Import { let Import {
public,
documentation, documentation,
location, location,
module, module,
as_name, as_name,
mut unqualified_values, mut unqualified_values,
unqualified_types, unqualified_types,
.. package: (),
} = i; } = i;
// Find imported module // Find imported module
let module_info = let module_info =
@ -818,6 +819,7 @@ fn record_imported_items_for_use_detection<A>(
} }
Ok(Definition::Import(Import { Ok(Definition::Import(Import {
public,
documentation, documentation,
location, location,
module, module,

View File

@ -410,6 +410,7 @@ pub struct Import<PackageName> {
pub unqualified_values: Vec<UnqualifiedImport>, pub unqualified_values: Vec<UnqualifiedImport>,
pub unqualified_types: Vec<UnqualifiedImport>, pub unqualified_types: Vec<UnqualifiedImport>,
pub package: PackageName, pub package: PackageName,
pub public: bool,
} }
impl<T> Import<T> { impl<T> Import<T> {

View File

@ -231,9 +231,13 @@ where
let def = match (self.tok0.take(), self.tok1.as_ref()) { let def = match (self.tok0.take(), self.tok1.as_ref()) {
// Imports // Imports
(Some((start, Token::Pub, _)), Some((_, Token::Import, _))) => {
let _ = self.next_tok();
self.parse_import(start, false)
}
(Some((start, Token::Import, _)), _) => { (Some((start, Token::Import, _)), _) => {
let _ = self.next_tok(); let _ = self.next_tok();
self.parse_import(start) self.parse_import(start, false)
} }
// Module Constants // Module Constants
(Some((_, Token::Const, _)), _) => { (Some((_, Token::Const, _)), _) => {
@ -1925,7 +1929,11 @@ where
// import a/b // import a/b
// import a/b.{c} // import a/b.{c}
// import a/b.{c as d} as e // import a/b.{c as d} as e
fn parse_import(&mut self, import_start: u32) -> Result<Option<UntypedDefinition>, ParseError> { fn parse_import(
&mut self,
import_start: u32,
public: bool,
) -> Result<Option<UntypedDefinition>, ParseError> {
let mut start = 0; let mut start = 0;
let mut end; let mut end;
let mut module = String::new(); let mut module = String::new();
@ -1985,6 +1993,7 @@ where
} }
Ok(Some(Definition::Import(Import { Ok(Some(Definition::Import(Import {
public,
documentation, documentation,
location: SrcSpan { location: SrcSpan {
start: import_start, start: import_start,

View File

@ -51,6 +51,7 @@ Parsed {
}, },
], ],
package: (), package: (),
public: false,
}, },
), ),
target: None, target: None,