diff --git a/crates/ide/src/syntax_highlighting.rs b/crates/ide/src/syntax_highlighting.rs
index 5821bb1202f..4038136fcde 100644
--- a/crates/ide/src/syntax_highlighting.rs
+++ b/crates/ide/src/syntax_highlighting.rs
@@ -422,7 +422,10 @@ fn traverse(
continue;
}
highlight_format_string(hl, &string, &expanded_string, range);
- highlight_escape_string(hl, &string, range.start());
+
+ if !string.is_raw() {
+ highlight_escape_string(hl, &string, range.start());
+ }
}
} else if ast::ByteString::can_cast(token.kind())
&& ast::ByteString::can_cast(descended_token.kind())
diff --git a/crates/ide/src/syntax_highlighting/test_data/highlight_strings.html b/crates/ide/src/syntax_highlighting/test_data/highlight_strings.html
index d34f5cffbf1..4c6d69bc632 100644
--- a/crates/ide/src/syntax_highlighting/test_data/highlight_strings.html
+++ b/crates/ide/src/syntax_highlighting/test_data/highlight_strings.html
@@ -159,6 +159,7 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd
let _ = "\x28\x28\x00\x63\n";
let _ = b"\x28\x28\x00\x63\n";
+ let _ = r"\\";
println!("{\x41}", A = 92);
println!("{ничоси}", ничоси = 92);
diff --git a/crates/ide/src/syntax_highlighting/tests.rs b/crates/ide/src/syntax_highlighting/tests.rs
index 12205d47e5d..79fef0dcbd0 100644
--- a/crates/ide/src/syntax_highlighting/tests.rs
+++ b/crates/ide/src/syntax_highlighting/tests.rs
@@ -505,6 +505,7 @@ fn main() {
let _ = "\x28\x28\x00\x63\n";
let _ = b"\x28\x28\x00\x63\n";
+ let _ = r"\\";
println!("{\x41}", A = 92);
println!("{ничоси}", ничоси = 92);