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.rs20
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)
}
}