diff options
Diffstat (limited to 'crates/ra_mbe/src/lib.rs')
-rw-r--r-- | crates/ra_mbe/src/lib.rs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/crates/ra_mbe/src/lib.rs b/crates/ra_mbe/src/lib.rs index 38f0049ed..4203929d4 100644 --- a/crates/ra_mbe/src/lib.rs +++ b/crates/ra_mbe/src/lib.rs | |||
@@ -167,7 +167,7 @@ impl_froms!(TokenTree: Leaf, Subtree); | |||
167 | ) | 167 | ) |
168 | } | 168 | } |
169 | 169 | ||
170 | fn create_rules(macro_definition: &str) -> MacroRules { | 170 | pub(crate) fn create_rules(macro_definition: &str) -> MacroRules { |
171 | let source_file = ast::SourceFile::parse(macro_definition); | 171 | let source_file = ast::SourceFile::parse(macro_definition); |
172 | let macro_definition = | 172 | let macro_definition = |
173 | source_file.syntax().descendants().find_map(ast::MacroCall::cast).unwrap(); | 173 | source_file.syntax().descendants().find_map(ast::MacroCall::cast).unwrap(); |
@@ -176,7 +176,7 @@ impl_froms!(TokenTree: Leaf, Subtree); | |||
176 | crate::MacroRules::parse(&definition_tt).unwrap() | 176 | crate::MacroRules::parse(&definition_tt).unwrap() |
177 | } | 177 | } |
178 | 178 | ||
179 | fn expand(rules: &MacroRules, invocation: &str) -> tt::Subtree { | 179 | pub(crate) fn expand(rules: &MacroRules, invocation: &str) -> tt::Subtree { |
180 | let source_file = ast::SourceFile::parse(invocation); | 180 | let source_file = ast::SourceFile::parse(invocation); |
181 | let macro_invocation = | 181 | let macro_invocation = |
182 | source_file.syntax().descendants().find_map(ast::MacroCall::cast).unwrap(); | 182 | source_file.syntax().descendants().find_map(ast::MacroCall::cast).unwrap(); |
@@ -186,7 +186,7 @@ impl_froms!(TokenTree: Leaf, Subtree); | |||
186 | rules.expand(&invocation_tt).unwrap() | 186 | rules.expand(&invocation_tt).unwrap() |
187 | } | 187 | } |
188 | 188 | ||
189 | fn assert_expansion(rules: &MacroRules, invocation: &str, expansion: &str) { | 189 | pub(crate) fn assert_expansion(rules: &MacroRules, invocation: &str, expansion: &str) { |
190 | let expanded = expand(rules, invocation); | 190 | let expanded = expand(rules, invocation); |
191 | assert_eq!(expanded.to_string(), expansion); | 191 | assert_eq!(expanded.to_string(), expansion); |
192 | } | 192 | } |
@@ -338,7 +338,7 @@ SOURCE_FILE@[0; 40) | |||
338 | } | 338 | } |
339 | 339 | ||
340 | #[test] | 340 | #[test] |
341 | fn expand_literals_to_item_list() { | 341 | fn expand_literals_to_token_tree() { |
342 | fn to_subtree(tt: &tt::TokenTree) -> &tt::Subtree { | 342 | fn to_subtree(tt: &tt::TokenTree) -> &tt::Subtree { |
343 | if let tt::TokenTree::Subtree(subtree) = tt { | 343 | if let tt::TokenTree::Subtree(subtree) = tt { |
344 | return &subtree; | 344 | return &subtree; |
@@ -361,6 +361,7 @@ SOURCE_FILE@[0; 40) | |||
361 | let a = 'c'; | 361 | let a = 'c'; |
362 | let c = 1000; | 362 | let c = 1000; |
363 | let f = 12E+99_f64; | 363 | let f = 12E+99_f64; |
364 | let s = "rust1"; | ||
364 | } | 365 | } |
365 | } | 366 | } |
366 | } | 367 | } |
@@ -375,5 +376,7 @@ SOURCE_FILE@[0; 40) | |||
375 | assert_eq!(to_literal(&stm_tokens[5 + 3]).text, "1000"); | 376 | assert_eq!(to_literal(&stm_tokens[5 + 3]).text, "1000"); |
376 | // [let] [f] [=] [12E+99_f64] [;] | 377 | // [let] [f] [=] [12E+99_f64] [;] |
377 | assert_eq!(to_literal(&stm_tokens[10 + 3]).text, "12E+99_f64"); | 378 | assert_eq!(to_literal(&stm_tokens[10 + 3]).text, "12E+99_f64"); |
379 | // [let] [s] [=] ["rust1"] [;] | ||
380 | assert_eq!(to_literal(&stm_tokens[15 + 3]).text, "\"rust1\""); | ||
378 | } | 381 | } |
379 | } | 382 | } |