Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/syntax/src/lib.rs')
| -rw-r--r-- | crates/syntax/src/lib.rs | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/crates/syntax/src/lib.rs b/crates/syntax/src/lib.rs index ecf46d8969..c79742d8ef 100644 --- a/crates/syntax/src/lib.rs +++ b/crates/syntax/src/lib.rs @@ -173,52 +173,58 @@ impl SourceFile { } } +// FIXME: `parse` functions shouldn't hang directly from AST nodes, and they +// shouldn't return `Result`. +// +// We need a dedicated module for parser entry points, and they should always +// return `Parse`. + impl ast::Path { /// Returns `text`, parsed as a path, but only if it has no errors. pub fn parse(text: &str) -> Result<Self, ()> { - parsing::parse_text_fragment(text, parser::FragmentKind::Path) + parsing::parse_text_as(text, parser::ParserEntryPoint::Path) } } impl ast::Pat { /// Returns `text`, parsed as a pattern, but only if it has no errors. pub fn parse(text: &str) -> Result<Self, ()> { - parsing::parse_text_fragment(text, parser::FragmentKind::Pattern) + parsing::parse_text_as(text, parser::ParserEntryPoint::Pattern) } } impl ast::Expr { /// Returns `text`, parsed as an expression, but only if it has no errors. pub fn parse(text: &str) -> Result<Self, ()> { - parsing::parse_text_fragment(text, parser::FragmentKind::Expr) + parsing::parse_text_as(text, parser::ParserEntryPoint::Expr) } } impl ast::Item { /// Returns `text`, parsed as an item, but only if it has no errors. pub fn parse(text: &str) -> Result<Self, ()> { - parsing::parse_text_fragment(text, parser::FragmentKind::Item) + parsing::parse_text_as(text, parser::ParserEntryPoint::Item) } } impl ast::Type { /// Returns `text`, parsed as an type reference, but only if it has no errors. pub fn parse(text: &str) -> Result<Self, ()> { - parsing::parse_text_fragment(text, parser::FragmentKind::Type) + parsing::parse_text_as(text, parser::ParserEntryPoint::Type) } } impl ast::Attr { /// Returns `text`, parsed as an attribute, but only if it has no errors. pub fn parse(text: &str) -> Result<Self, ()> { - parsing::parse_text_fragment(text, parser::FragmentKind::Attr) + parsing::parse_text_as(text, parser::ParserEntryPoint::Attr) } } impl ast::Stmt { /// Returns `text`, parsed as statement, but only if it has no errors. pub fn parse(text: &str) -> Result<Self, ()> { - parsing::parse_text_fragment(text, parser::FragmentKind::StatementOptionalSemi) + parsing::parse_text_as(text, parser::ParserEntryPoint::StatementOptionalSemi) } } |