diff --git a/crates/languages/src/lib.rs b/crates/languages/src/lib.rs index 7089d036..398b765e 100644 --- a/crates/languages/src/lib.rs +++ b/crates/languages/src/lib.rs @@ -152,7 +152,7 @@ pub fn language_by_filename(path: &Path) -> Option> { "tsx" => language_by_name("tsx"), "ts" | "cts" | "mts" => language_by_name("typescript"), "java" | "groovy" | "gvy" | "gy" | "gsh" => language_by_name("java"), - "cpp" | "cxx" | "cc" | "h" | "hh" | "hpp" | "hxx" | "H" => language_by_name("cpp"), + "cpp" | "cxx" | "cc" | "h" | "hh" | "hpp" | "hxx" | "H" | "h++" => language_by_name("cpp"), "sh" | "zsh" | "bash" => language_by_name("shell"), "cs" => language_by_name("csharp"), "html" => language_by_name("html"), diff --git a/crates/languages/src/lib_tests.rs b/crates/languages/src/lib_tests.rs index db437e95..d0fea8a0 100644 --- a/crates/languages/src/lib_tests.rs +++ b/crates/languages/src/lib_tests.rs @@ -25,7 +25,9 @@ fn all_supported_languages_load_successfully() { #[test] fn cpp_header_extensions_resolve_to_cpp_language() { - for filename in ["header.hpp", "header.hxx", "header.H"] { + // Cover the common modern C++ header extensions (`.hpp`, `.hxx`), + // the older uppercase `.H` convention, and the rarer `.h++` form. + for filename in ["header.hpp", "header.hxx", "header.H", "header.h++"] { let language = language_by_filename(Path::new(filename)) .unwrap_or_else(|| panic!("expected {filename} to resolve to C++"));