Skip to content

Commit

Permalink
Special error when using catch after try
Browse files Browse the repository at this point in the history
  • Loading branch information
Kampfkarren committed Apr 10, 2019
1 parent 53b622a commit 4a938b5
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 1 deletion.
8 changes: 7 additions & 1 deletion src/libsyntax/parse/parser.rs
Expand Up @@ -3618,7 +3618,13 @@ impl<'a> Parser<'a> {
{
let (iattrs, body) = self.parse_inner_attrs_and_block()?;
attrs.extend(iattrs);
Ok(self.mk_expr(span_lo.to(body.span), ExprKind::TryBlock(body), attrs))
if self.eat_keyword(keywords::Catch) {
let mut error = self.struct_span_err(self.prev_span, "`try {} catch` is not a valid syntax");
error.help("try using `match` on the result of the `try` block instead");
Err(error)
} else {
Ok(self.mk_expr(span_lo.to(body.span), ExprKind::TryBlock(body), attrs))
}
}

// `match` token already eaten
Expand Down
9 changes: 9 additions & 0 deletions src/test/ui/try-block/try-block-catch.rs
@@ -0,0 +1,9 @@
// compile-flags: --edition 2018

#![feature(try_blocks)]

fn main() {
let res: Option<bool> = try {
true
} catch { }; //~ ERROR `try {} catch` is not a valid syntax
}
10 changes: 10 additions & 0 deletions src/test/ui/try-block/try-block-catch.stderr
@@ -0,0 +1,10 @@
error: `try {} catch` is not a valid syntax
--> $DIR/try-block-catch.rs:8:4
|
LL | } catch { }; //~ ERROR `try {} catch` is not a valid syntax
| ^^^^^
|
= help: try using `match` on the result of the `try` block instead

error: aborting due to previous error

0 comments on commit 4a938b5

Please sign in to comment.