From 9638adaa40d22adcf9b4002d95a13977c0f1436f Mon Sep 17 00:00:00 2001 From: Geoffry Song Date: Wed, 2 Oct 2019 23:38:03 -0700 Subject: Fix parsing of block expressions in "forbid_structs" contexts. Forbidding block expressions entirely is too strict; instead, we should only forbid them in contexts where we are parsing an optional RHS (i.e. the RHS of a range expression). --- .../parser/inline/ok/0080_postfix_range.txt | 107 +++++++++++++++++---- 1 file changed, 86 insertions(+), 21 deletions(-) (limited to 'crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.txt') diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.txt b/crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.txt index f3c292f5e..9f8a6b0f6 100644 --- a/crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.txt +++ b/crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.txt @@ -1,5 +1,5 @@ -SOURCE_FILE@[0; 26) - FN_DEF@[0; 25) +SOURCE_FILE@[0; 89) + FN_DEF@[0; 88) FN_KW@[0; 2) "fn" WHITESPACE@[2; 3) " " NAME@[3; 6) @@ -8,24 +8,89 @@ SOURCE_FILE@[0; 26) L_PAREN@[6; 7) "(" R_PAREN@[7; 8) ")" WHITESPACE@[8; 9) " " - BLOCK_EXPR@[9; 25) - BLOCK@[9; 25) + BLOCK_EXPR@[9; 88) + BLOCK@[9; 88) L_CURLY@[9; 10) "{" - WHITESPACE@[10; 11) " " - LET_STMT@[11; 23) - LET_KW@[11; 14) "let" - WHITESPACE@[14; 15) " " - BIND_PAT@[15; 16) - NAME@[15; 16) - IDENT@[15; 16) "x" - WHITESPACE@[16; 17) " " - EQ@[17; 18) "=" + WHITESPACE@[10; 15) "\n " + LET_STMT@[15; 27) + LET_KW@[15; 18) "let" WHITESPACE@[18; 19) " " - RANGE_EXPR@[19; 22) - LITERAL@[19; 20) - INT_NUMBER@[19; 20) "1" - DOTDOT@[20; 22) ".." - SEMI@[22; 23) ";" - WHITESPACE@[23; 24) " " - R_CURLY@[24; 25) "}" - WHITESPACE@[25; 26) "\n" + BIND_PAT@[19; 20) + NAME@[19; 20) + IDENT@[19; 20) "x" + WHITESPACE@[20; 21) " " + EQ@[21; 22) "=" + WHITESPACE@[22; 23) " " + RANGE_EXPR@[23; 26) + LITERAL@[23; 24) + INT_NUMBER@[23; 24) "1" + DOTDOT@[24; 26) ".." + SEMI@[26; 27) ";" + WHITESPACE@[27; 32) "\n " + EXPR_STMT@[32; 54) + MATCH_EXPR@[32; 53) + MATCH_KW@[32; 37) "match" + WHITESPACE@[37; 38) " " + RANGE_EXPR@[38; 41) + LITERAL@[38; 39) + INT_NUMBER@[38; 39) "1" + DOTDOT@[39; 41) ".." + WHITESPACE@[41; 42) " " + MATCH_ARM_LIST@[42; 53) + L_CURLY@[42; 43) "{" + WHITESPACE@[43; 44) " " + MATCH_ARM@[44; 51) + PLACEHOLDER_PAT@[44; 45) + UNDERSCORE@[44; 45) "_" + WHITESPACE@[45; 46) " " + FAT_ARROW@[46; 48) "=>" + WHITESPACE@[48; 49) " " + TUPLE_EXPR@[49; 51) + L_PAREN@[49; 50) "(" + R_PAREN@[50; 51) ")" + WHITESPACE@[51; 52) " " + R_CURLY@[52; 53) "}" + SEMI@[53; 54) ";" + WHITESPACE@[54; 59) "\n " + EXPR_STMT@[59; 86) + MATCH_EXPR@[59; 85) + MATCH_KW@[59; 64) "match" + WHITESPACE@[64; 65) " " + RANGE_EXPR@[65; 73) + METHOD_CALL_EXPR@[65; 70) + PATH_EXPR@[65; 66) + PATH@[65; 66) + PATH_SEGMENT@[65; 66) + NAME_REF@[65; 66) + IDENT@[65; 66) "a" + DOT@[66; 67) "." + NAME_REF@[67; 68) + IDENT@[67; 68) "b" + ARG_LIST@[68; 70) + L_PAREN@[68; 69) "(" + R_PAREN@[69; 70) ")" + DOTDOT@[70; 72) ".." + PATH_EXPR@[72; 73) + PATH@[72; 73) + PATH_SEGMENT@[72; 73) + NAME_REF@[72; 73) + IDENT@[72; 73) "S" + WHITESPACE@[73; 74) " " + MATCH_ARM_LIST@[74; 85) + L_CURLY@[74; 75) "{" + WHITESPACE@[75; 76) " " + MATCH_ARM@[76; 83) + PLACEHOLDER_PAT@[76; 77) + UNDERSCORE@[76; 77) "_" + WHITESPACE@[77; 78) " " + FAT_ARROW@[78; 80) "=>" + WHITESPACE@[80; 81) " " + TUPLE_EXPR@[81; 83) + L_PAREN@[81; 82) "(" + R_PAREN@[82; 83) ")" + WHITESPACE@[83; 84) " " + R_CURLY@[84; 85) "}" + SEMI@[85; 86) ";" + WHITESPACE@[86; 87) "\n" + R_CURLY@[87; 88) "}" + WHITESPACE@[88; 89) "\n" -- cgit v1.2.3