From cc081b7e1c68360ec157a31fa7fa32a38345e8d6 Mon Sep 17 00:00:00 2001 From: Marijn Suijten Date: Tue, 17 Nov 2020 15:34:41 +0100 Subject: syntax,ssr: Implement statement parsing --- crates/syntax/src/lib.rs | 7 +++++++ crates/syntax/src/tests.rs | 9 +++++++++ 2 files changed, 16 insertions(+) (limited to 'crates/syntax/src') diff --git a/crates/syntax/src/lib.rs b/crates/syntax/src/lib.rs index 4d272f367..51ae3da07 100644 --- a/crates/syntax/src/lib.rs +++ b/crates/syntax/src/lib.rs @@ -212,6 +212,13 @@ impl ast::Attr { } } +impl ast::Stmt { + /// Returns `text`, parsed as statement, but only if it has no errors. + pub fn parse(text: &str) -> Result { + parsing::parse_text_fragment(text, parser::FragmentKind::Statement) + } +} + /// Matches a `SyntaxNode` against an `ast` type. /// /// # Example: diff --git a/crates/syntax/src/tests.rs b/crates/syntax/src/tests.rs index 8c217dfe0..9d3433c9d 100644 --- a/crates/syntax/src/tests.rs +++ b/crates/syntax/src/tests.rs @@ -102,6 +102,15 @@ fn type_parser_tests() { ); } +#[test] +fn stmt_parser_tests() { + fragment_parser_dir_test( + &["parser/fragments/stmt/ok"], + &["parser/fragments/stmt/err"], + crate::ast::Stmt::parse, + ); +} + #[test] fn parser_fuzz_tests() { for (_, text) in collect_rust_files(&test_data_dir(), &["parser/fuzz-failures"]) { -- cgit v1.2.3