From d61ab20ff0392a49599b7383ab8845db94de1f7e Mon Sep 17 00:00:00 2001 From: hafeoz <95505675+hafeoz@users.noreply.github.com> Date: Thu, 26 May 2022 22:54:31 +0100 Subject: [PATCH 1/4] Use correct var for attribute completeness fn --- src/librustdoc/doctest.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/librustdoc/doctest.rs b/src/librustdoc/doctest.rs index a4ec4052e0567..014147a47e414 100644 --- a/src/librustdoc/doctest.rs +++ b/src/librustdoc/doctest.rs @@ -795,7 +795,7 @@ fn partition_source(s: &str, edition: Edition) -> (String, String, String) { // If not, then we append the new line into the pending attribute to check // if this time it's complete... mod_attr_pending.push_str(line); - if !trimline.is_empty() && check_if_attr_is_complete(line, edition) { + if !trimline.is_empty() && check_if_attr_is_complete(&mod_attr_pending, edition) { // If it's complete, then we can clear the pending content. mod_attr_pending.clear(); } From 73ba7a756d86239da765719d2c8ab0450ecd0405 Mon Sep 17 00:00:00 2001 From: hafeoz <95505675+hafeoz@users.noreply.github.com> Date: Thu, 26 May 2022 22:55:29 +0100 Subject: [PATCH 2/4] Add tests --- src/test/rustdoc-ui/doc-comment-multi-line-attr.rs | 11 +++++++++++ .../rustdoc-ui/doc-comment-multi-line-attr.stdout | 6 ++++++ 2 files changed, 17 insertions(+) create mode 100644 src/test/rustdoc-ui/doc-comment-multi-line-attr.rs create mode 100644 src/test/rustdoc-ui/doc-comment-multi-line-attr.stdout diff --git a/src/test/rustdoc-ui/doc-comment-multi-line-attr.rs b/src/test/rustdoc-ui/doc-comment-multi-line-attr.rs new file mode 100644 index 0000000000000..b880c49946ebe --- /dev/null +++ b/src/test/rustdoc-ui/doc-comment-multi-line-attr.rs @@ -0,0 +1,11 @@ +// Regression test for #97440: Multiline (more than 2 lines) inner attribute triggers ICE during doctest +// compile-flags:--test +// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" +// check-pass + +//! ```rust +//! #![deny( +//! unused_parens, +//! )] +//! ``` diff --git a/src/test/rustdoc-ui/doc-comment-multi-line-attr.stdout b/src/test/rustdoc-ui/doc-comment-multi-line-attr.stdout new file mode 100644 index 0000000000000..e47edbd2a81a0 --- /dev/null +++ b/src/test/rustdoc-ui/doc-comment-multi-line-attr.stdout @@ -0,0 +1,6 @@ + +running 1 test +test $DIR/doc-comment-multi-line-attr.rs - (line 7) ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in $TIME + From c6cda15a164343b1820f374ba36a37c985fa1dab Mon Sep 17 00:00:00 2001 From: hafeoz <95505675+hafeoz@users.noreply.github.com> Date: Thu, 26 May 2022 23:13:37 +0100 Subject: [PATCH 3/4] Remove few characters for tidy check to pass --- src/test/rustdoc-ui/doc-comment-multi-line-attr.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/rustdoc-ui/doc-comment-multi-line-attr.rs b/src/test/rustdoc-ui/doc-comment-multi-line-attr.rs index b880c49946ebe..97259f782bdde 100644 --- a/src/test/rustdoc-ui/doc-comment-multi-line-attr.rs +++ b/src/test/rustdoc-ui/doc-comment-multi-line-attr.rs @@ -1,4 +1,4 @@ -// Regression test for #97440: Multiline (more than 2 lines) inner attribute triggers ICE during doctest +// Regression test for #97440: Multiline inner attribute triggers ICE during doctest // compile-flags:--test // normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" From c3beb039099fd87cf2e61178e31a70059fc0bed8 Mon Sep 17 00:00:00 2001 From: hafeoz <95505675+hafeoz@users.noreply.github.com> Date: Thu, 26 May 2022 23:27:41 +0100 Subject: [PATCH 4/4] Formatting --- src/librustdoc/doctest.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/librustdoc/doctest.rs b/src/librustdoc/doctest.rs index 014147a47e414..86c58cd79dce0 100644 --- a/src/librustdoc/doctest.rs +++ b/src/librustdoc/doctest.rs @@ -795,7 +795,9 @@ fn partition_source(s: &str, edition: Edition) -> (String, String, String) { // If not, then we append the new line into the pending attribute to check // if this time it's complete... mod_attr_pending.push_str(line); - if !trimline.is_empty() && check_if_attr_is_complete(&mod_attr_pending, edition) { + if !trimline.is_empty() + && check_if_attr_is_complete(&mod_attr_pending, edition) + { // If it's complete, then we can clear the pending content. mod_attr_pending.clear(); }