about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorCedric <cedric.brancourt@gmail.com>2019-06-08 10:49:46 +0200
committerCedric <cedric.brancourt@gmail.com>2019-06-08 10:49:46 +0200
commit5fb099dc786c1bee7116fecb4965d34ad5e0a4a5 (patch)
tree12064e001712a29691980ab7d52284cd3da5bdc5 /src/libsyntax
parentc1c60d292e2dd2deff7084208274f9a02f750d43 (diff)
downloadrust-5fb099dc786c1bee7116fecb4965d34ad5e0a4a5.tar.gz
rust-5fb099dc786c1bee7116fecb4965d34ad5e0a4a5.zip
use pattern matching for slices destructuring
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/diagnostics/plugin.rs23
-rw-r--r--src/libsyntax/parse/mod.rs55
2 files changed, 32 insertions, 46 deletions
diff --git a/src/libsyntax/diagnostics/plugin.rs b/src/libsyntax/diagnostics/plugin.rs
index 9f01b9b9f9b..b958a760e82 100644
--- a/src/libsyntax/diagnostics/plugin.rs
+++ b/src/libsyntax/diagnostics/plugin.rs
@@ -33,8 +33,8 @@ pub fn expand_diagnostic_used<'cx>(ecx: &'cx mut ExtCtxt<'_>,
                                    span: Span,
                                    token_tree: &[TokenTree])
                                    -> Box<dyn MacResult+'cx> {
-    let code = match (token_tree.len(), token_tree.get(0)) {
-        (1, Some(&TokenTree::Token(Token { kind: token::Ident(code, _), .. }))) => code,
+    let code = match token_tree {
+        &[TokenTree::Token(Token { kind: token::Ident(code, _), .. })] => code,
         _ => unreachable!()
     };
 
@@ -66,22 +66,15 @@ pub fn expand_register_diagnostic<'cx>(ecx: &'cx mut ExtCtxt<'_>,
                                        span: Span,
                                        token_tree: &[TokenTree])
                                        -> Box<dyn MacResult+'cx> {
-    let (code, description) = match (
-        token_tree.len(),
-        token_tree.get(0),
-        token_tree.get(1),
-        token_tree.get(2)
-    ) {
-        (1, Some(&TokenTree::Token(Token { kind: token::Ident(code, _), .. })), None, None) => {
+    let (code, description) = match  token_tree {
+        &[TokenTree::Token(Token { kind: token::Ident(code, _), .. })] => {
             (code, None)
         },
-        (3, Some(&TokenTree::Token(Token { kind: token::Ident(code, _), .. })),
-            Some(&TokenTree::Token(Token { kind: token::Comma, .. })),
-            Some(&TokenTree::Token(Token {
-                kind: token::Literal(token::Lit { symbol, .. }), ..
-            }))) => {
+        &[TokenTree::Token(Token { kind: token::Ident(code, _), .. }),
+          TokenTree::Token(Token { kind: token::Comma, .. }),
+          TokenTree::Token(Token { kind: token::Literal(token::Lit { symbol, .. }), ..})] => {
             (code, Some(symbol))
-        }
+        },
         _ => unreachable!()
     };
 
diff --git a/src/libsyntax/parse/mod.rs b/src/libsyntax/parse/mod.rs
index 063823bbf4d..1d5f1001ac9 100644
--- a/src/libsyntax/parse/mod.rs
+++ b/src/libsyntax/parse/mod.rs
@@ -424,47 +424,40 @@ mod tests {
                 string_to_stream("macro_rules! zip (($a)=>($a))".to_string()).trees().collect();
             let tts: &[TokenTree] = &tts[..];
 
-            match (tts.len(), tts.get(0), tts.get(1), tts.get(2), tts.get(3)) {
-                (
-                    4,
-                    Some(&TokenTree::Token(Token {
-                        kind: token::Ident(name_macro_rules, false), ..
-                    })),
-                    Some(&TokenTree::Token(Token { kind: token::Not, .. })),
-                    Some(&TokenTree::Token(Token { kind: token::Ident(name_zip, false), .. })),
-                    Some(&TokenTree::Delimited(_, macro_delim, ref macro_tts)),
-                )
+            match tts {
+               &[TokenTree::Token(Token {kind: token::Ident(name_macro_rules, false), ..}),
+                 TokenTree::Token(Token { kind: token::Not, .. }),
+                 TokenTree::Token(Token { kind: token::Ident(name_zip, false), .. }),
+                 TokenTree::Delimited(_, macro_delim, ref macro_tts)
+                ]
                 if name_macro_rules == sym::macro_rules && name_zip.as_str() == "zip" => {
                     let tts = &macro_tts.trees().collect::<Vec<_>>();
-                    match (tts.len(), tts.get(0), tts.get(1), tts.get(2)) {
-                        (
-                            3,
-                            Some(&TokenTree::Delimited(_, first_delim, ref first_tts)),
-                            Some(&TokenTree::Token(Token { kind: token::FatArrow, .. })),
-                            Some(&TokenTree::Delimited(_, second_delim, ref second_tts)),
-                        )
+                    match tts {
+                        &[
+                            TokenTree::Delimited(_, first_delim, ref first_tts),
+                            TokenTree::Token(Token { kind: token::FatArrow, .. }),
+                            TokenTree::Delimited(_, second_delim, ref second_tts),
+                        ]
                         if macro_delim == token::Paren => {
                             let tts = &first_tts.trees().collect::<Vec<_>>();
-                            match (tts.len(), tts.get(0), tts.get(1)) {
-                                (
-                                    2,
-                                    Some(&TokenTree::Token(Token { kind: token::Dollar, .. })),
-                                    Some(&TokenTree::Token(Token {
+                            match tts {
+                                &[
+                                    TokenTree::Token(Token { kind: token::Dollar, .. }),
+                                    TokenTree::Token(Token {
                                         kind: token::Ident(name, false), ..
-                                    })),
-                                )
+                                    }),
+                                ]
                                 if first_delim == token::Paren && name.as_str() == "a" => {},
                                 _ => panic!("value 3: {:?} {:?}", first_delim, first_tts),
                             }
                             let tts = &second_tts.trees().collect::<Vec<_>>();
-                            match (tts.len(), tts.get(0), tts.get(1)) {
-                                (
-                                    2,
-                                    Some(&TokenTree::Token(Token { kind: token::Dollar, .. })),
-                                    Some(&TokenTree::Token(Token {
+                            match tts {
+                                &[
+                                    TokenTree::Token(Token { kind: token::Dollar, .. }),
+                                    TokenTree::Token(Token {
                                         kind: token::Ident(name, false), ..
-                                    })),
-                                )
+                                    }),
+                                ]
                                 if second_delim == token::Paren && name.as_str() == "a" => {},
                                 _ => panic!("value 4: {:?} {:?}", second_delim, second_tts),
                             }