about summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
authorKampfkarren <boynedmaster@gmail.com>2019-04-10 10:35:48 -0700
committerKampfkarren <boynedmaster@gmail.com>2019-04-10 10:35:48 -0700
commit4a938b5b3c475a5a12fa582eca2dd91d76cb0d3e (patch)
treeed8e4bdc1fa1a9033961b4eaa2f9c6b85674ddb5 /src/libsyntax/parse
parent53b622a48a7945e223dbc5cfb30f7cbd38acc7c5 (diff)
downloadrust-4a938b5b3c475a5a12fa582eca2dd91d76cb0d3e.tar.gz
rust-4a938b5b3c475a5a12fa582eca2dd91d76cb0d3e.zip
Special error when using catch after try
Diffstat (limited to 'src/libsyntax/parse')
-rw-r--r--src/libsyntax/parse/parser.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 5b430d13516..98bad0a80aa 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -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