[#1083] Try block syntax: fix tests
This commit is contained in:
parent
281c9eeaff
commit
505b8d873f
@ -948,7 +948,6 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> {
|
||||
Expr::Block { statements, tail } => self.infer_block(statements, *tail, expected),
|
||||
Expr::TryBlock { body } => {
|
||||
let _inner = self.infer_expr(*body, expected);
|
||||
|
||||
// FIXME should be std::result::Result<{inner}, _>
|
||||
Ty::Unknown
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ pub(super) fn atom_expr(p: &mut Parser, r: Restrictions) -> Option<(CompletedMar
|
||||
T![loop] => loop_expr(p, None),
|
||||
T![for] => for_expr(p, None),
|
||||
T![while] => while_expr(p, None),
|
||||
T![try] => try_expr(p, None),
|
||||
T![try] => try_block_expr(p, None),
|
||||
LIFETIME if la == T![:] => {
|
||||
let m = p.start();
|
||||
label(p);
|
||||
@ -118,7 +118,9 @@ pub(super) fn atom_expr(p: &mut Parser, r: Restrictions) -> Option<(CompletedMar
|
||||
}
|
||||
};
|
||||
let blocklike = match done.kind() {
|
||||
IF_EXPR | WHILE_EXPR | FOR_EXPR | LOOP_EXPR | MATCH_EXPR | BLOCK_EXPR | TRY_BLOCK_EXPR => BlockLike::Block,
|
||||
IF_EXPR | WHILE_EXPR | FOR_EXPR | LOOP_EXPR | MATCH_EXPR | BLOCK_EXPR | TRY_BLOCK_EXPR => {
|
||||
BlockLike::Block
|
||||
}
|
||||
_ => BlockLike::NotBlock,
|
||||
};
|
||||
Some((done, blocklike))
|
||||
@ -494,13 +496,11 @@ fn break_expr(p: &mut Parser, r: Restrictions) -> CompletedMarker {
|
||||
m.complete(p, BREAK_EXPR)
|
||||
}
|
||||
|
||||
// test try_expr
|
||||
// test try_block_expr
|
||||
// fn foo() {
|
||||
// try {
|
||||
//
|
||||
// }
|
||||
// let _ = try {};
|
||||
// }
|
||||
fn try_expr(p: &mut Parser, m: Option<Marker>) -> CompletedMarker {
|
||||
fn try_block_expr(p: &mut Parser, m: Option<Marker>) -> CompletedMarker {
|
||||
assert!(p.at(T![try]));
|
||||
let m = m.unwrap_or_else(|| p.start());
|
||||
p.bump();
|
||||
|
@ -0,0 +1,3 @@
|
||||
fn foo() {
|
||||
let _ = try {};
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
SOURCE_FILE@[0; 33)
|
||||
FN_DEF@[0; 32)
|
||||
FN_KW@[0; 2) "fn"
|
||||
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; 32)
|
||||
L_CURLY@[9; 10) "{"
|
||||
WHITESPACE@[10; 15) "\n "
|
||||
LET_STMT@[15; 30)
|
||||
LET_KW@[15; 18) "let"
|
||||
WHITESPACE@[18; 19) " "
|
||||
PLACEHOLDER_PAT@[19; 20)
|
||||
UNDERSCORE@[19; 20) "_"
|
||||
WHITESPACE@[20; 21) " "
|
||||
EQ@[21; 22) "="
|
||||
WHITESPACE@[22; 23) " "
|
||||
TRY_EXPR@[23; 29)
|
||||
TRY_KW@[23; 26) "try"
|
||||
WHITESPACE@[26; 27) " "
|
||||
BLOCK@[27; 29)
|
||||
L_CURLY@[27; 28) "{"
|
||||
R_CURLY@[28; 29) "}"
|
||||
SEMI@[29; 30) ";"
|
||||
WHITESPACE@[30; 31) "\n"
|
||||
R_CURLY@[31; 32) "}"
|
||||
WHITESPACE@[32; 33) "\n"
|
@ -1,5 +0,0 @@
|
||||
fn main() {
|
||||
let res = try {
|
||||
|
||||
};
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
SOURCE_FILE@[0; 41)
|
||||
FN_DEF@[0; 41)
|
||||
FN_KW@[0; 2) "fn"
|
||||
WHITESPACE@[2; 3) " "
|
||||
NAME@[3; 7)
|
||||
IDENT@[3; 7) "main"
|
||||
PARAM_LIST@[7; 9)
|
||||
L_PAREN@[7; 8) "("
|
||||
R_PAREN@[8; 9) ")"
|
||||
WHITESPACE@[9; 10) " "
|
||||
BLOCK@[10; 41)
|
||||
L_CURLY@[10; 11) "{"
|
||||
WHITESPACE@[11; 16) "\n "
|
||||
LET_STMT@[16; 39)
|
||||
LET_KW@[16; 19) "let"
|
||||
WHITESPACE@[19; 20) " "
|
||||
BIND_PAT@[20; 23)
|
||||
NAME@[20; 23)
|
||||
IDENT@[20; 23) "res"
|
||||
WHITESPACE@[23; 24) " "
|
||||
EQ@[24; 25) "="
|
||||
WHITESPACE@[25; 26) " "
|
||||
TRY_EXPR@[26; 38)
|
||||
TRY_KW@[26; 29) "try"
|
||||
WHITESPACE@[29; 30) " "
|
||||
BLOCK@[30; 38)
|
||||
L_CURLY@[30; 31) "{"
|
||||
WHITESPACE@[31; 37) "\n\n "
|
||||
R_CURLY@[37; 38) "}"
|
||||
SEMI@[38; 39) ";"
|
||||
WHITESPACE@[39; 40) "\n"
|
||||
R_CURLY@[40; 41) "}"
|
Loading…
x
Reference in New Issue
Block a user