From ef462ed6af7ae8e0d30894baefe6ba1ff49aab8f Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 13 Aug 2020 18:28:23 +0200 Subject: Better recovery in `use foo::;` --- crates/parser/src/grammar/items.rs | 16 ++++++++++++++-- .../test_data/parser/inline/err/0015_empty_segment.rast | 8 +++----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/crates/parser/src/grammar/items.rs b/crates/parser/src/grammar/items.rs index b2f7cc21f..8fd8f3b80 100644 --- a/crates/parser/src/grammar/items.rs +++ b/crates/parser/src/grammar/items.rs @@ -27,8 +27,20 @@ pub(super) fn mod_contents(p: &mut Parser, stop_on_r_curly: bool) { } pub(super) const ITEM_RECOVERY_SET: TokenSet = token_set![ - FN_KW, STRUCT_KW, ENUM_KW, IMPL_KW, TRAIT_KW, CONST_KW, STATIC_KW, LET_KW, MOD_KW, PUB_KW, - CRATE_KW, USE_KW, MACRO_KW + FN_KW, + STRUCT_KW, + ENUM_KW, + IMPL_KW, + TRAIT_KW, + CONST_KW, + STATIC_KW, + LET_KW, + MOD_KW, + PUB_KW, + CRATE_KW, + USE_KW, + MACRO_KW, + T![;], ]; pub(super) fn item_or_macro(p: &mut Parser, stop_on_r_curly: bool) { diff --git a/crates/syntax/test_data/parser/inline/err/0015_empty_segment.rast b/crates/syntax/test_data/parser/inline/err/0015_empty_segment.rast index 2f59d0606..e872526d9 100644 --- a/crates/syntax/test_data/parser/inline/err/0015_empty_segment.rast +++ b/crates/syntax/test_data/parser/inline/err/0015_empty_segment.rast @@ -2,14 +2,12 @@ SOURCE_FILE@0..13 USE@0..12 USE_KW@0..3 "use" WHITESPACE@3..4 " " - USE_TREE@4..12 - PATH@4..12 + USE_TREE@4..11 + PATH@4..11 PATH@4..9 PATH_SEGMENT@4..9 CRATE_KW@4..9 "crate" COLON2@9..11 "::" - ERROR@11..12 - SEMICOLON@11..12 ";" + SEMICOLON@11..12 ";" WHITESPACE@12..13 "\n" error 11..11: expected identifier -error 12..12: expected SEMICOLON -- cgit v1.2.3