Make clang version parsing logic more robust

Previously the function assumed that the version number appeared in the
third word. This PR adds a heuristic - take the first word that starts
with a number.

This way we can also parse: `debian clang version 11.0` that my clang
reports.
This commit is contained in:
Marcel Hlopko 2021-02-15 13:39:30 +01:00 committed by Emilio Cobos Álvarez
parent b1c4178826
commit e92dcf2a3f

View File

@ -2444,10 +2444,12 @@ pub struct ClangVersion {
pub fn clang_version() -> ClangVersion {
ensure_libclang_is_loaded();
//Debian clang version 11.0.1-2
let raw_v: String = clang::extract_clang_version();
let split_v: Option<Vec<&str>> = raw_v
.split_whitespace()
.nth(2)
.filter(|t| t.chars().next().map_or(false, |v| v.is_ascii_digit()))
.next()
.map(|v| v.split('.').collect());
match split_v {
Some(v) => {