Parse impl for ExprMatch
diff --git a/src/expr.rs b/src/expr.rs
index 18f5296..4424197 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -1508,7 +1508,7 @@
         } else if input.peek(Token![loop]) {
             input.call(expr_loop).map(Expr::Loop)
         } else if input.peek(Token![match]) {
-            input.call(expr_match).map(Expr::Match)
+            input.parse().map(Expr::Match)
         } else if input.peek(Token![yield]) {
             input.call(expr_yield).map(Expr::Yield)
         } else if input.peek(Token![unsafe]) {
@@ -1703,7 +1703,7 @@
         } else if input.peek(Token![loop]) {
             Expr::Loop(input.call(expr_loop)?)
         } else if input.peek(Token![match]) {
-            Expr::Match(input.call(expr_match)?)
+            Expr::Match(input.parse()?)
         } else if input.peek(Token![try]) && input.peek2(token::Brace) {
             Expr::TryBlock(input.call(expr_try_block)?)
         } else if input.peek(Token![unsafe]) {
@@ -1877,26 +1877,28 @@
     }
 
     #[cfg(feature = "full")]
-    fn expr_match(input: ParseStream) -> Result<ExprMatch> {
-        let match_token: Token![match] = input.parse()?;
-        let expr = expr_no_struct(input)?;
+    impl Parse for ExprMatch {
+        fn parse(input: ParseStream) -> Result<Self> {
+            let match_token: Token![match] = input.parse()?;
+            let expr = expr_no_struct(input)?;
 
-        let content;
-        let brace_token = braced!(content in input);
-        let inner_attrs = content.call(Attribute::parse_inner)?;
+            let content;
+            let brace_token = braced!(content in input);
+            let inner_attrs = content.call(Attribute::parse_inner)?;
 
-        let mut arms = Vec::new();
-        while !content.is_empty() {
-            arms.push(content.call(Arm::parse)?);
+            let mut arms = Vec::new();
+            while !content.is_empty() {
+                arms.push(content.call(Arm::parse)?);
+            }
+
+            Ok(ExprMatch {
+                attrs: inner_attrs,
+                match_token: match_token,
+                expr: Box::new(expr),
+                brace_token: brace_token,
+                arms: arms,
+            })
         }
-
-        Ok(ExprMatch {
-            attrs: inner_attrs,
-            match_token: match_token,
-            expr: Box::new(expr),
-            brace_token: brace_token,
-            arms: arms,
-        })
     }
 
     #[cfg(feature = "full")]