Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/ide/src/hover/render.rs8
-rw-r--r--crates/ide/src/hover/tests.rs22
2 files changed, 29 insertions, 1 deletions
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]