Parse try block as verbatim expr
diff --git a/src/expr.rs b/src/expr.rs
index 979de71..841f934 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -1573,6 +1573,9 @@
// must be before ExprStruct
call!(unstable_async_block) => { Expr::Verbatim }
|
+ // must be before ExprStruct
+ call!(unstable_try_block) => { Expr::Verbatim }
+ |
// must be before expr_path
cond_reduce!(allow_struct, syn!(ExprStruct)) => { Expr::Struct }
|
@@ -2159,6 +2162,18 @@
));
#[cfg(feature = "full")]
+ named!(unstable_try_block -> ExprVerbatim, do_parse!(
+ begin: call!(verbatim::grab_cursor) >>
+ many0!(Attribute::parse_outer) >>
+ keyword!(try) >>
+ syn!(Block) >>
+ end: call!(verbatim::grab_cursor) >>
+ (ExprVerbatim {
+ tts: verbatim::token_range(begin..end),
+ })
+ ));
+
+ #[cfg(feature = "full")]
named!(fn_arg -> FnArg, do_parse!(
pat: syn!(Pat) >>
ty: option!(tuple!(punct!(:), syn!(Type))) >>
diff --git a/src/token.rs b/src/token.rs
index a60202f..0fe8c4d 100644
--- a/src/token.rs
+++ b/src/token.rs
@@ -500,6 +500,7 @@
"struct" pub struct Struct /// `struct`
"super" pub struct Super /// `super`
"trait" pub struct Trait /// `trait`
+ "try" pub struct Try /// `try`
"type" pub struct Type /// `type`
"union" pub struct Union /// `union`
"unsafe" pub struct Unsafe /// `unsafe`
@@ -602,6 +603,7 @@
(struct) => { $crate::token::Struct };
(super) => { $crate::token::Super };
(trait) => { $crate::token::Trait };
+ (try) => { $crate::token::Try };
(type) => { $crate::token::Type };
(union) => { $crate::token::Union };
(unsafe) => { $crate::token::Unsafe };
@@ -716,6 +718,7 @@
($i:expr, struct) => { call!($i, <$crate::token::Struct as $crate::synom::Synom>::parse) };
($i:expr, super) => { call!($i, <$crate::token::Super as $crate::synom::Synom>::parse) };
($i:expr, trait) => { call!($i, <$crate::token::Trait as $crate::synom::Synom>::parse) };
+ ($i:expr, try) => { call!($i, <$crate::token::Try as $crate::synom::Synom>::parse) };
($i:expr, type) => { call!($i, <$crate::token::Type as $crate::synom::Synom>::parse) };
($i:expr, union) => { call!($i, <$crate::token::Union as $crate::synom::Synom>::parse) };
($i:expr, unsafe) => { call!($i, <$crate::token::Unsafe as $crate::synom::Synom>::parse) };