From 77f2381eea2ca4da6c6d7dc81322be542e3dbb87 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Mon, 4 Mar 2019 14:24:02 +0300 Subject: improve error recovery parse the contents of error block as an expression --- .../data/parser/err/0008_item_block_recovery.txt | 53 ++++++++++++---------- .../err/0009_broken_struct_type_parameter.txt | 20 ++++++-- .../tests/data/parser/err/0028_macro_2.0.txt | 39 +++++++++------- 3 files changed, 70 insertions(+), 42 deletions(-) (limited to 'crates/ra_syntax') diff --git a/crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.txt b/crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.txt index de5c81f29..870c818ae 100644 --- a/crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.txt +++ b/crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.txt @@ -28,29 +28,36 @@ SOURCE_FILE@[0; 95) ERROR@[20; 80) L_CURLY@[20; 21) WHITESPACE@[21; 26) - IF_KW@[26; 28) - WHITESPACE@[28; 29) - TRUE_KW@[29; 33) - WHITESPACE@[33; 34) - ERROR@[34; 51) - L_CURLY@[34; 35) - WHITESPACE@[35; 44) - INT_NUMBER@[44; 45) "1" - WHITESPACE@[45; 50) - R_CURLY@[50; 51) - WHITESPACE@[51; 52) - ELSE_KW@[52; 56) - WHITESPACE@[56; 57) - ERROR@[57; 78) - L_CURLY@[57; 58) - WHITESPACE@[58; 67) - INT_NUMBER@[67; 68) "2" - WHITESPACE@[68; 69) - PLUS@[69; 70) - WHITESPACE@[70; 71) - INT_NUMBER@[71; 72) "3" - WHITESPACE@[72; 77) - R_CURLY@[77; 78) + IF_EXPR@[26; 78) + IF_KW@[26; 28) + WHITESPACE@[28; 29) + CONDITION@[29; 33) + LITERAL@[29; 33) + TRUE_KW@[29; 33) + WHITESPACE@[33; 34) + BLOCK@[34; 51) + L_CURLY@[34; 35) + WHITESPACE@[35; 44) + LITERAL@[44; 45) + INT_NUMBER@[44; 45) "1" + WHITESPACE@[45; 50) + R_CURLY@[50; 51) + WHITESPACE@[51; 52) + ELSE_KW@[52; 56) + WHITESPACE@[56; 57) + BLOCK@[57; 78) + L_CURLY@[57; 58) + WHITESPACE@[58; 67) + BIN_EXPR@[67; 72) + LITERAL@[67; 68) + INT_NUMBER@[67; 68) "2" + WHITESPACE@[68; 69) + PLUS@[69; 70) + WHITESPACE@[70; 71) + LITERAL@[71; 72) + INT_NUMBER@[71; 72) "3" + WHITESPACE@[72; 77) + R_CURLY@[77; 78) WHITESPACE@[78; 79) R_CURLY@[79; 80) WHITESPACE@[80; 82) diff --git a/crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.txt b/crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.txt index e22c061d2..26c5d395c 100644 --- a/crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.txt +++ b/crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.txt @@ -28,10 +28,24 @@ SOURCE_FILE@[0; 43) ERROR@[17; 31) L_CURLY@[17; 18) WHITESPACE@[18; 23) - IDENT@[23; 24) "f" - COLON@[24; 25) + EXPR_STMT@[23; 24) + PATH_EXPR@[23; 24) + PATH@[23; 24) + PATH_SEGMENT@[23; 24) + NAME_REF@[23; 24) + IDENT@[23; 24) "f" + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[24; 25) + ERROR@[24; 25) + COLON@[24; 25) + err: `expected SEMI` WHITESPACE@[25; 26) - IDENT@[26; 29) "u32" + PATH_EXPR@[26; 29) + PATH@[26; 29) + PATH_SEGMENT@[26; 29) + NAME_REF@[26; 29) + IDENT@[26; 29) "u32" WHITESPACE@[29; 30) R_CURLY@[30; 31) WHITESPACE@[31; 33) diff --git a/crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt b/crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt index 440bd7f92..181ccfa25 100644 --- a/crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt +++ b/crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt @@ -34,22 +34,29 @@ SOURCE_FILE@[0; 349) ERROR@[42; 93) L_CURLY@[42; 43) WHITESPACE@[43; 48) - IDENT@[48; 51) "vec" - EXCL@[51; 52) - L_BRACK@[52; 53) - WHITESPACE@[53; 62) - DOLLAR@[62; 63) - L_PAREN@[63; 64) - IDENT@[64; 78) "parse_use_tree" - L_PAREN@[78; 79) - DOLLAR@[79; 80) - IDENT@[80; 81) "s" - R_PAREN@[81; 82) - COMMA@[82; 83) - R_PAREN@[83; 84) - STAR@[84; 85) - WHITESPACE@[85; 90) - R_BRACK@[90; 91) + MACRO_CALL@[48; 91) + PATH@[48; 51) + PATH_SEGMENT@[48; 51) + NAME_REF@[48; 51) + IDENT@[48; 51) "vec" + EXCL@[51; 52) + TOKEN_TREE@[52; 91) + L_BRACK@[52; 53) + WHITESPACE@[53; 62) + DOLLAR@[62; 63) + TOKEN_TREE@[63; 84) + L_PAREN@[63; 64) + IDENT@[64; 78) "parse_use_tree" + TOKEN_TREE@[78; 82) + L_PAREN@[78; 79) + DOLLAR@[79; 80) + IDENT@[80; 81) "s" + R_PAREN@[81; 82) + COMMA@[82; 83) + R_PAREN@[83; 84) + STAR@[84; 85) + WHITESPACE@[85; 90) + R_BRACK@[90; 91) WHITESPACE@[91; 92) R_CURLY@[92; 93) WHITESPACE@[93; 95) -- cgit v1.2.3