about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAleksey Kladov <aleksey.kladov@gmail.com>2021-10-09 18:15:05 +0300
committerAleksey Kladov <aleksey.kladov@gmail.com>2021-10-09 18:15:05 +0300
commita060b9a4b234a3b98c9852781f2035889869f3ba (patch)
tree0df6937dccf9307608ad83575c53c005236ae7f8
parentc2e425dd00e72f31334cdadc52a02d6b6ede9526 (diff)
downloadrust-a060b9a4b234a3b98c9852781f2035889869f3ba.tar.gz
rust-a060b9a4b234a3b98c9852781f2035889869f3ba.zip
internal: move some macro tests
-rw-r--r--crates/hir_def/src/macro_expansion_tests.rs8
-rw-r--r--crates/hir_def/src/macro_expansion_tests/mbe.rs39
-rw-r--r--crates/mbe/src/tests/expand.rs96
3 files changed, 45 insertions, 98 deletions
diff --git a/crates/hir_def/src/macro_expansion_tests.rs b/crates/hir_def/src/macro_expansion_tests.rs
index d96af5c4070..60c9fd7d0a5 100644
--- a/crates/hir_def/src/macro_expansion_tests.rs
+++ b/crates/hir_def/src/macro_expansion_tests.rs
@@ -123,6 +123,9 @@ fn pretty_print_macro_expansion(expn: SyntaxNode) -> String {
             (IDENT | LIFETIME_IDENT, IDENT | LIFETIME_IDENT) => " ",
             (IDENT, _) if curr_kind.is_keyword() => " ",
             (_, IDENT) if prev_kind.is_keyword() => " ",
+            (T![>], IDENT) => " ",
+            (T![>], _) if curr_kind.is_keyword() => " ",
+            (T![->], _) | (_, T![->]) => " ",
             _ => "",
         };
 
@@ -133,8 +136,9 @@ fn pretty_print_macro_expansion(expn: SyntaxNode) -> String {
         }
 
         res.push_str(space);
-        if space == "\n" && curr_kind != T!['}'] {
-            res.push_str(&"    ".repeat(indent_level));
+        if space == "\n" {
+            let level = if curr_kind == T!['}'] { indent_level - 1 } else { indent_level };
+            res.push_str(&"    ".repeat(level));
         }
         prev_kind = curr_kind;
         format_to!(res, "{}", token)
diff --git a/crates/hir_def/src/macro_expansion_tests/mbe.rs b/crates/hir_def/src/macro_expansion_tests/mbe.rs
index 06ef8f35726..c7442bade6e 100644
--- a/crates/hir_def/src/macro_expansion_tests/mbe.rs
+++ b/crates/hir_def/src/macro_expansion_tests/mbe.rs
@@ -10,6 +10,45 @@ use expect_test::expect;
 use crate::macro_expansion_tests::check;
 
 #[test]
+fn mbe_smoke_test() {
+    check(
+        r#"
+macro_rules! impl_froms {
+    ($e:ident: $($v:ident),*) => {
+        $(
+            impl From<$v> for $e {
+                fn from(it: $v) -> $e { $e::$v(it) }
+            }
+        )*
+    }
+}
+impl_froms!(TokenTree: Leaf, Subtree);
+"#,
+        expect![[r#"
+macro_rules! impl_froms {
+    ($e:ident: $($v:ident),*) => {
+        $(
+            impl From<$v> for $e {
+                fn from(it: $v) -> $e { $e::$v(it) }
+            }
+        )*
+    }
+}
+impl From<Leaf> for TokenTree {
+    fn from(it:Leaf) -> TokenTree {
+        TokenTree::Leaf(it)
+    }
+}
+impl From<Subtree> for TokenTree {
+    fn from(it:Subtree) -> TokenTree {
+        TokenTree::Subtree(it)
+    }
+}
+"#]],
+    );
+}
+
+#[test]
 fn expansion_does_not_parse_as_expression() {
     check(
         r#"
diff --git a/crates/mbe/src/tests/expand.rs b/crates/mbe/src/tests/expand.rs
index 85a51588ebe..d0eb49455b7 100644
--- a/crates/mbe/src/tests/expand.rs
+++ b/crates/mbe/src/tests/expand.rs
@@ -72,102 +72,6 @@ macro_rules! foobar {
 }
 
 #[test]
-fn test_convert_tt() {
-    parse_macro(r#"
-macro_rules! impl_froms {
-    ($e:ident: $($v:ident),*) => {
-        $(
-            impl From<$v> for $e {
-                fn from(it: $v) -> $e {
-                    $e::$v(it)
-                }
-            }
-        )*
-    }
-}
-"#)
-        .assert_expand_tt(
-            "impl_froms!(TokenTree: Leaf, Subtree);",
-            "impl From <Leaf > for TokenTree {fn from (it : Leaf) -> TokenTree {TokenTree ::Leaf (it)}} \
-             impl From <Subtree > for TokenTree {fn from (it : Subtree) -> TokenTree {TokenTree ::Subtree (it)}}"
-        );
-}
-
-#[test]
-fn test_convert_tt2() {
-    parse_macro(
-        r#"
-macro_rules! impl_froms {
-    ($e:ident: $($v:ident),*) => {
-        $(
-            impl From<$v> for $e {
-                fn from(it: $v) -> $e {
-                    $e::$v(it)
-                }
-            }
-        )*
-    }
-}
-"#,
-    )
-    .assert_expand(
-        "impl_froms!(TokenTree: Leaf, Subtree);",
-        r#"
-SUBTREE $
-  IDENT   impl 20
-  IDENT   From 21
-  PUNCH   < [joint] 22
-  IDENT   Leaf 53
-  PUNCH   > [alone] 25
-  IDENT   for 26
-  IDENT   TokenTree 51
-  SUBTREE {} 29
-    IDENT   fn 30
-    IDENT   from 31
-    SUBTREE () 32
-      IDENT   it 33
-      PUNCH   : [alone] 34
-      IDENT   Leaf 53
-    PUNCH   - [joint] 37
-    PUNCH   > [alone] 38
-    IDENT   TokenTree 51
-    SUBTREE {} 41
-      IDENT   TokenTree 51
-      PUNCH   : [joint] 44
-      PUNCH   : [joint] 45
-      IDENT   Leaf 53
-      SUBTREE () 48
-        IDENT   it 49
-  IDENT   impl 20
-  IDENT   From 21
-  PUNCH   < [joint] 22
-  IDENT   Subtree 55
-  PUNCH   > [alone] 25
-  IDENT   for 26
-  IDENT   TokenTree 51
-  SUBTREE {} 29
-    IDENT   fn 30
-    IDENT   from 31
-    SUBTREE () 32
-      IDENT   it 33
-      PUNCH   : [alone] 34
-      IDENT   Subtree 55
-    PUNCH   - [joint] 37
-    PUNCH   > [alone] 38
-    IDENT   TokenTree 51
-    SUBTREE {} 41
-      IDENT   TokenTree 51
-      PUNCH   : [joint] 44
-      PUNCH   : [joint] 45
-      IDENT   Subtree 55
-      SUBTREE () 48
-        IDENT   it 49
-"#,
-    );
-}
-
-
-#[test]
 fn test_match_group_with_multichar_sep() {
     parse_macro(
         r#"