Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/utils.rs')
-rw-r--r--crates/ide-assists/src/utils.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/crates/ide-assists/src/utils.rs b/crates/ide-assists/src/utils.rs
index fdc5dd13eb..0471998f0b 100644
--- a/crates/ide-assists/src/utils.rs
+++ b/crates/ide-assists/src/utils.rs
@@ -1026,6 +1026,20 @@ fn test_required_hashes() {
assert_eq!(5, required_hashes("#ab\"##\"####c"));
}
+/// Calculate the string literal suffix length
+pub(crate) fn string_suffix(s: &str) -> Option<&str> {
+ s.rfind(['"', '\'', '#']).map(|i| &s[i + 1..])
+}
+#[test]
+fn test_string_suffix() {
+ assert_eq!(Some(""), string_suffix(r#""abc""#));
+ assert_eq!(Some(""), string_suffix(r#""""#));
+ assert_eq!(Some("a"), string_suffix(r#"""a"#));
+ assert_eq!(Some("i32"), string_suffix(r#"""i32"#));
+ assert_eq!(Some("i32"), string_suffix(r#"r""i32"#));
+ assert_eq!(Some("i32"), string_suffix(r##"r#""#i32"##));
+}
+
/// Replaces the record expression, handling field shorthands including inside macros.
pub(crate) fn replace_record_field_expr(
ctx: &AssistContext<'_>,