From 2697ecaa64570841f0ed2a3ca5bc02cf41dccc4a Mon Sep 17 00:00:00 2001 From: Edwin Cheng Date: Mon, 8 Apr 2019 15:58:02 +0800 Subject: Use SubtreeWalker instread of flatten TtToken --- crates/ra_mbe/src/lib.rs | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) (limited to 'crates/ra_mbe/src/lib.rs') diff --git a/crates/ra_mbe/src/lib.rs b/crates/ra_mbe/src/lib.rs index 84ce2b783..a21ea4dbc 100644 --- a/crates/ra_mbe/src/lib.rs +++ b/crates/ra_mbe/src/lib.rs @@ -383,8 +383,22 @@ SOURCE_FILE@[0; 40) assert_eq!(to_literal(&stm_tokens[15 + 3]).text, "\"rust1\""); } - /// The following tests are port from intellij-rust directly - /// https://github.com/intellij-rust/intellij-rust/blob/c4e9feee4ad46e7953b1948c112533360b6087bb/src/test/kotlin/org/rust/lang/core/macros/RsMacroExpansionTest.kt + #[test] + fn test_two_idents() { + let rules = create_rules( + r#" + macro_rules! foo { + ($ i:ident, $ j:ident) => { + fn foo() { let a = $ i; let b = $j; } + } + } +"#, + ); + assert_expansion(&rules, "foo! { foo, bar }", "fn foo () {let a = foo ; let b = bar ;}"); + } + + // The following tests are port from intellij-rust directly + // https://github.com/intellij-rust/intellij-rust/blob/c4e9feee4ad46e7953b1948c112533360b6087bb/src/test/kotlin/org/rust/lang/core/macros/RsMacroExpansionTest.kt #[test] fn test_path() { @@ -401,7 +415,21 @@ SOURCE_FILE@[0; 40) assert_expansion( &rules, "foo! { bar::::baz:: }", - "fn foo () {let a = bar :: < u8 > :: baz :: < u8 > ;}", + "fn foo () {let a = bar ::< u8 > ::baz ::< u8 > ;}", + ); + } + + #[test] + fn test_two_paths() { + let rules = create_rules( + r#" + macro_rules! foo { + ($ i:path, $ j:path) => { + fn foo() { let a = $ i; let b = $j; } + } + } +"#, ); + assert_expansion(&rules, "foo! { foo, bar }", "fn foo () {let a = foo ; let b = bar ;}"); } } -- cgit v1.2.3