summaryrefslogtreecommitdiff
path: root/crates/typst-syntax/src/parser.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/typst-syntax/src/parser.rs')
-rw-r--r--crates/typst-syntax/src/parser.rs18
1 files changed, 16 insertions, 2 deletions
diff --git a/crates/typst-syntax/src/parser.rs b/crates/typst-syntax/src/parser.rs
index 4ce3917e..aa0431e9 100644
--- a/crates/typst-syntax/src/parser.rs
+++ b/crates/typst-syntax/src/parser.rs
@@ -989,9 +989,22 @@ fn module_import(p: &mut Parser) {
// imported at the same time.
p.expect(SyntaxKind::Ident);
}
- if p.eat_if(SyntaxKind::Colon) && !p.eat_if(SyntaxKind::Star) {
- import_items(p);
+
+ if p.eat_if(SyntaxKind::Colon) {
+ if p.at(SyntaxKind::LeftParen) {
+ let m1 = p.marker();
+ p.enter_newline_mode(NewlineMode::Continue);
+ p.assert(SyntaxKind::LeftParen);
+
+ import_items(p);
+
+ p.expect_closing_delimiter(m1, SyntaxKind::RightParen);
+ p.exit_newline_mode();
+ } else if !p.eat_if(SyntaxKind::Star) {
+ import_items(p);
+ }
}
+
p.wrap(m, SyntaxKind::ModuleImport);
}
@@ -1021,6 +1034,7 @@ fn import_items(p: &mut Parser) {
p.expect(SyntaxKind::Comma);
}
}
+
p.wrap(m, SyntaxKind::ImportItems);
}