diff --git a/crates/ide/src/syntax_highlighting/tests.rs b/crates/ide/src/syntax_highlighting/tests.rs
index 46cc667fc45..2f870d769c0 100644
--- a/crates/ide/src/syntax_highlighting/tests.rs
+++ b/crates/ide/src/syntax_highlighting/tests.rs
@@ -1028,6 +1028,26 @@ macro_rules! test {}
let _ = analysis.highlight(HL_CONFIG, file_id).unwrap();
}
+#[test]
+fn highlight_callable_no_crash() {
+ // regression test for #13838.
+ let (analysis, file_id) = fixture::file(
+ r#"
+//- minicore: fn, sized
+impl FnOnce for &F
+where
+ F: Fn,
+{
+ type Output = F::Output;
+}
+
+trait Trait {}
+fn foo(x: &fn(&dyn Trait)) {}
+"#,
+ );
+ let _ = analysis.highlight(HL_CONFIG, file_id).unwrap();
+}
+
/// Highlights the code given by the `ra_fixture` argument, renders the
/// result as HTML, and compares it with the HTML file given as `snapshot`.
/// Note that the `snapshot` file is overwritten by the rendered HTML.