introduce hacks module

This commit is contained in:
Aleksey Kladov 2021-12-28 18:57:13 +03:00
parent aa1788dc71
commit bfc263f1f9
6 changed files with 34 additions and 51 deletions

View file

@ -40,6 +40,7 @@ pub mod ast;
pub mod fuzz;
pub mod utils;
pub mod ted;
pub mod hacks;
use std::{marker::PhantomData, sync::Arc};
@ -167,26 +168,6 @@ 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_as(text, parser::ParserEntryPoint::Path)
}
}
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_as(text, parser::ParserEntryPoint::Expr)
}
}
/// Matches a `SyntaxNode` against an `ast` type.
///
/// # Example: