From 2fa90e736b026ee979d9eb59178dc1f792228250 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 28 Aug 2018 11:12:42 +0300 Subject: better recovery for exprs --- .../data/parser/err/0017_incomplete_binexpr.txt | 5 ++- .../tests/data/parser/err/0018_incomplete_fn.txt | 19 +++++------ .../tests/data/parser/err/0019_let_recover.rs | 4 +++ .../tests/data/parser/err/0019_let_recover.txt | 39 ++++++++++++++++++++++ 4 files changed, 54 insertions(+), 13 deletions(-) create mode 100644 crates/libsyntax2/tests/data/parser/err/0019_let_recover.rs create mode 100644 crates/libsyntax2/tests/data/parser/err/0019_let_recover.txt (limited to 'crates/libsyntax2/tests/data/parser') diff --git a/crates/libsyntax2/tests/data/parser/err/0017_incomplete_binexpr.txt b/crates/libsyntax2/tests/data/parser/err/0017_incomplete_binexpr.txt index db9a2f175..f0be287ad 100644 --- a/crates/libsyntax2/tests/data/parser/err/0017_incomplete_binexpr.txt +++ b/crates/libsyntax2/tests/data/parser/err/0017_incomplete_binexpr.txt @@ -35,13 +35,12 @@ ROOT@[0; 47) INT_NUMBER@[33; 35) "92" SEMI@[35; 36) WHITESPACE@[36; 41) - BIN_EXPR@[41; 45) + BIN_EXPR@[41; 44) LITERAL@[41; 42) INT_NUMBER@[41; 42) "1" WHITESPACE@[42; 43) PLUS@[43; 44) - WHITESPACE@[44; 45) err: `expected expression` - ERROR@[45; 45) + WHITESPACE@[44; 45) R_CURLY@[45; 46) WHITESPACE@[46; 47) diff --git a/crates/libsyntax2/tests/data/parser/err/0018_incomplete_fn.txt b/crates/libsyntax2/tests/data/parser/err/0018_incomplete_fn.txt index 3f3a7784b..58e39a341 100644 --- a/crates/libsyntax2/tests/data/parser/err/0018_incomplete_fn.txt +++ b/crates/libsyntax2/tests/data/parser/err/0018_incomplete_fn.txt @@ -11,12 +11,12 @@ ROOT@[0; 183) ITEM_LIST@[14; 182) L_CURLY@[14; 15) WHITESPACE@[15; 20) - FN_DEF@[20; 181) + FN_DEF@[20; 180) FN_KW@[20; 22) WHITESPACE@[22; 23) NAME@[23; 32) IDENT@[23; 32) "new_scope" - PARAM_LIST@[32; 181) + PARAM_LIST@[32; 180) L_PAREN@[32; 33) PARAM@[33; 38) REF_PAT@[33; 35) @@ -163,17 +163,16 @@ ROOT@[0; 183) err: `expected parameters` err: `expected COMMA` WHITESPACE@[169; 170) - PARAM@[170; 181) + PARAM@[170; 180) BIND_PAT@[170; 180) NAME@[170; 180) IDENT@[170; 180) "set_parent" err: `expected COLON` - WHITESPACE@[180; 181) - err: `expected type` - err: `expected COMMA` - err: `expected value parameter` - err: `expected R_PAREN` - err: `expected a block` - ERROR@[181; 181) + err: `expected type` + err: `expected COMMA` + err: `expected value parameter` + err: `expected R_PAREN` + err: `expected a block` + WHITESPACE@[180; 181) R_CURLY@[181; 182) WHITESPACE@[182; 183) diff --git a/crates/libsyntax2/tests/data/parser/err/0019_let_recover.rs b/crates/libsyntax2/tests/data/parser/err/0019_let_recover.rs new file mode 100644 index 000000000..52bddd494 --- /dev/null +++ b/crates/libsyntax2/tests/data/parser/err/0019_let_recover.rs @@ -0,0 +1,4 @@ +fn foo() { + let foo = + let bar = 1; +} diff --git a/crates/libsyntax2/tests/data/parser/err/0019_let_recover.txt b/crates/libsyntax2/tests/data/parser/err/0019_let_recover.txt new file mode 100644 index 000000000..9ffa9d781 --- /dev/null +++ b/crates/libsyntax2/tests/data/parser/err/0019_let_recover.txt @@ -0,0 +1,39 @@ +ROOT@[0; 44) + FN_DEF@[0; 43) + FN_KW@[0; 2) + WHITESPACE@[2; 3) + NAME@[3; 6) + IDENT@[3; 6) "foo" + PARAM_LIST@[6; 8) + L_PAREN@[6; 7) + R_PAREN@[7; 8) + WHITESPACE@[8; 9) + BLOCK@[9; 43) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + LET_STMT@[15; 24) + LET_KW@[15; 18) + WHITESPACE@[18; 19) + BIND_PAT@[19; 22) + NAME@[19; 22) + IDENT@[19; 22) "foo" + WHITESPACE@[22; 23) + EQ@[23; 24) + err: `expected expression` + err: `expected SEMI` + WHITESPACE@[24; 29) + LET_STMT@[29; 41) + LET_KW@[29; 32) + WHITESPACE@[32; 33) + BIND_PAT@[33; 36) + NAME@[33; 36) + IDENT@[33; 36) "bar" + WHITESPACE@[36; 37) + EQ@[37; 38) + WHITESPACE@[38; 39) + LITERAL@[39; 40) + INT_NUMBER@[39; 40) "1" + SEMI@[40; 41) + WHITESPACE@[41; 42) + R_CURLY@[42; 43) + WHITESPACE@[43; 44) -- cgit v1.2.3