From a3470a8114eb3db2e67a4876b04c70fb8f7ba712 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 10 Oct 2021 11:39:08 +0300 Subject: [PATCH] move tests --- crates/hir_def/src/macro_expansion_tests.rs | 1 + .../hir_def/src/macro_expansion_tests/mbe.rs | 87 +++++++++++++++++++ crates/mbe/src/syntax_bridge.rs | 1 + crates/mbe/src/tests/expand.rs | 84 ------------------ 4 files changed, 89 insertions(+), 84 deletions(-) diff --git a/crates/hir_def/src/macro_expansion_tests.rs b/crates/hir_def/src/macro_expansion_tests.rs index 5c0894419c7..66874a674d8 100644 --- a/crates/hir_def/src/macro_expansion_tests.rs +++ b/crates/hir_def/src/macro_expansion_tests.rs @@ -131,6 +131,7 @@ fn pretty_print_macro_expansion(expn: SyntaxNode) -> String { (T![,], _) => " ", (T![fn], T!['(']) => "", (T![']'], _) if curr_kind.is_keyword() => " ", + (T![']'], T![#]) => "\n", _ if prev_kind.is_keyword() => " ", _ => "", }; diff --git a/crates/hir_def/src/macro_expansion_tests/mbe.rs b/crates/hir_def/src/macro_expansion_tests/mbe.rs index 2fe70e9f4fc..d17c9131da7 100644 --- a/crates/hir_def/src/macro_expansion_tests/mbe.rs +++ b/crates/hir_def/src/macro_expansion_tests/mbe.rs @@ -956,3 +956,90 @@ macro_rules! m { "##]], ); } + +#[test] +fn test_meta_doc_comments() { + cov_mark::check!(test_meta_doc_comments); + check( + r#" +macro_rules! m { + ($(#[$m:meta])+) => ( $(#[$m])+ fn bar() {} ) +} +m! { + /// Single Line Doc 1 + /** + MultiLines Doc + */ +} +"#, + expect![[r##" +macro_rules! m { + ($(#[$m:meta])+) => ( $(#[$m])+ fn bar() {} ) +} +#[doc = " Single Line Doc 1"] +#[doc = "\n MultiLines Doc\n "] fn bar() {} +"##]], + ); +} + +#[test] +fn test_meta_extended_key_value_attributes() { + check( + r#" +macro_rules! m { + (#[$m:meta]) => ( #[$m] fn bar() {} ) +} +m! { #[doc = concat!("The `", "bla", "` lang item.")] } +"#, + expect![[r##" +macro_rules! m { + (#[$m:meta]) => ( #[$m] fn bar() {} ) +} +#[doc = concat!("The `", "bla", "` lang item.")] fn bar() {} +"##]], + ); +} + +#[test] +fn test_meta_doc_comments_non_latin() { + check( + r#" +macro_rules! m { + ($(#[$ m:meta])+) => ( $(#[$m])+ fn bar() {} ) +} +m! { + /// 錦瑟無端五十弦,一弦一柱思華年。 + /** + 莊生曉夢迷蝴蝶,望帝春心託杜鵑。 + */ +} +"#, + expect![[r##" +macro_rules! m { + ($(#[$ m:meta])+) => ( $(#[$m])+ fn bar() {} ) +} +#[doc = " 錦瑟無端五十弦,一弦一柱思華年。"] +#[doc = "\n 莊生曉夢迷蝴蝶,望帝春心託杜鵑。\n "] fn bar() {} +"##]], + ); +} + +#[test] +fn test_meta_doc_comments_escaped_characters() { + check( + r#" +macro_rules! m { + ($(#[$m:meta])+) => ( $(#[$m])+ fn bar() {} ) +} +m! { + /// \ " ' +} +"#, + expect![[r##" +macro_rules! m { + ($(#[$m:meta])+) => ( $(#[$m])+ fn bar() {} ) +} +#[doc = " \\ \" \'"] fn bar() {} +"##]], + ); +} diff --git a/crates/mbe/src/syntax_bridge.rs b/crates/mbe/src/syntax_bridge.rs index f3c9af1ccb4..6bd57bb568b 100644 --- a/crates/mbe/src/syntax_bridge.rs +++ b/crates/mbe/src/syntax_bridge.rs @@ -307,6 +307,7 @@ fn doc_comment_text(comment: &ast::Comment) -> SmolStr { } fn convert_doc_comment(token: &syntax::SyntaxToken) -> Option> { + cov_mark::hit!(test_meta_doc_comments); let comment = ast::Comment::cast(token.clone())?; let doc = comment.kind().doc?; diff --git a/crates/mbe/src/tests/expand.rs b/crates/mbe/src/tests/expand.rs index 79299894429..2ff85740f5c 100644 --- a/crates/mbe/src/tests/expand.rs +++ b/crates/mbe/src/tests/expand.rs @@ -101,90 +101,6 @@ fn test_attr_to_token_tree() { ); } -#[test] -fn test_meta_doc_comments() { - parse_macro( - r#" - macro_rules! foo { - ($(#[$ i:meta])+) => ( - $(#[$ i])+ - fn bar() {} - ) - } -"#, - ). - assert_expand_items( - r#"foo! { - /// Single Line Doc 1 - /** - MultiLines Doc - */ - }"#, - "# [doc = \" Single Line Doc 1\"] # [doc = \"\\n MultiLines Doc\\n \"] fn bar () {}", - ); -} - -#[test] -fn test_meta_extended_key_value_attributes() { - parse_macro( - r#" -macro_rules! foo { - (#[$i:meta]) => ( - #[$ i] - fn bar() {} - ) -} -"#, - ) - .assert_expand_items( - r#"foo! { #[doc = concat!("The `", "bla", "` lang item.")] }"#, - r#"# [doc = concat ! ("The `" , "bla" , "` lang item.")] fn bar () {}"#, - ); -} - -#[test] -fn test_meta_doc_comments_non_latin() { - parse_macro( - r#" - macro_rules! foo { - ($(#[$ i:meta])+) => ( - $(#[$ i])+ - fn bar() {} - ) - } -"#, - ). - assert_expand_items( - r#"foo! { - /// 錦瑟無端五十弦,一弦一柱思華年。 - /** - 莊生曉夢迷蝴蝶,望帝春心託杜鵑。 - */ - }"#, - "# [doc = \" 錦瑟無端五十弦,一弦一柱思華年。\"] # [doc = \"\\n 莊生曉夢迷蝴蝶,望帝春心託杜鵑。\\n \"] fn bar () {}", - ); -} - -#[test] -fn test_meta_doc_comments_escaped_characters() { - parse_macro( - r#" - macro_rules! foo { - ($(#[$ i:meta])+) => ( - $(#[$ i])+ - fn bar() {} - ) - } -"#, - ) - .assert_expand_items( - r#"foo! { - /// \ " ' - }"#, - r#"# [doc = " \\ \" \'"] fn bar () {}"#, - ); -} - #[test] fn test_tt_block() { parse_macro( -- 2.44.0