From 5b696bac5cbd6cc9108ec83c67bc84c3d5329590 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Mon, 13 May 2024 12:56:02 +0200 Subject: [PATCH] Don't render multi-line literal values --- crates/ide/src/hover/render.rs | 8 +++++++- crates/ide/src/hover/tests.rs | 22 ++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/crates/ide/src/hover/render.rs b/crates/ide/src/hover/render.rs index e392a8ec38..a166bab37c 100644 --- a/crates/ide/src/hover/render.rs +++ b/crates/ide/src/hover/render.rs @@ -564,7 +564,13 @@ pub(super) fn literal(sema: &Semantics<'_, RootDatabase>, token: SyntaxToken) -> let mut s = format!("```rust\n{ty}\n```\n___\n\n"); match value { - Ok(value) => format_to!(s, "value of literal: {value}"), + Ok(value) => { + if let Some(newline) = value.find('\n') { + format_to!(s, "value of literal (truncated up to newline): {}", &value[..newline]) + } else { + format_to!(s, "value of literal: {value}") + } + } Err(error) => format_to!(s, "invalid literal: {error}"), } Some(s.into()) diff --git a/crates/ide/src/hover/tests.rs b/crates/ide/src/hover/tests.rs index b5547c0514..76d86f8ede 100644 --- a/crates/ide/src/hover/tests.rs +++ b/crates/ide/src/hover/tests.rs @@ -7814,6 +7814,28 @@ fn main() { value of literal: 🦀\u{1f980}\\\x41 "#]], ); + check( + r#" +fn main() { + $0r"🦀\u{1f980}\\\x41 + + +fsdghs"; +} +"#, + expect![[r#" + *r"🦀\u{1f980}\\\x41 + + + fsdghs"* + ```rust + &str + ``` + ___ + + value of literal (truncated up to newline): 🦀\u{1f980}\\\x41 + "#]], + ); } #[test]