use super::*;
impl<'input, D: Diagnostics, C: ConcreteSyntaxTreeBuilder> ParserState<'input, D, C> {
pub(super) fn parse_type_alias(&mut self) {
self.start_node(SyntaxKind::TypeAlias);
self.parse_optional_modifiers();
self.parse_token(SyntaxKind::Keyword);
self.skip_trivia();
if self.peek().is_some_and(|i| i.kind().is_ident()) {
self.parse_ident();
} else {
self.emit_expected_type_alias_name();
}
self.parse_only_assignable_expression();
self.finish_node();
}
fn emit_expected_type_alias_name(&mut self) {
let diagnostic_details = self.diagnostic_details();
let error = ParseError::expected_type_alias_name_before();
self.emit_diagnostic(error, diagnostic_details);
}
}
mod test {
#[test]
fn test_type_alias() {
crate::test::create_parsing_test("type_alias/*.skull", |state| {
state.parse_type_alias();
});
}
}