about summary refs log tree commit diff
path: root/src/tools/compiletest
diff options
context:
space:
mode:
author12101111 <w12101111@gmail.com>2021-03-26 17:29:52 +0800
committer12101111 <w12101111@gmail.com>2021-03-26 17:29:52 +0800
commit656f6ac975d3b8af6e780f1bc02e826e1629ed6a (patch)
tree0955c9aa89e2bc883916a0a77d0806dd2da09b3b /src/tools/compiletest
parent0ced530534de1a77504b6229e6303d37a12282ee (diff)
downloadrust-656f6ac975d3b8af6e780f1bc02e826e1629ed6a.tar.gz
rust-656f6ac975d3b8af6e780f1bc02e826e1629ed6a.zip
Handle llvm_version with suffix like "12.0.0libcxx"
Diffstat (limited to 'src/tools/compiletest')
-rw-r--r--src/tools/compiletest/src/header.rs6
-rw-r--r--src/tools/compiletest/src/tests.rs4
2 files changed, 9 insertions, 1 deletions
diff --git a/src/tools/compiletest/src/header.rs b/src/tools/compiletest/src/header.rs
index ff0d845be93..83ea676e8f4 100644
--- a/src/tools/compiletest/src/header.rs
+++ b/src/tools/compiletest/src/header.rs
@@ -973,7 +973,11 @@ fn parse_normalization_string(line: &mut &str) -> Option<String> {
 }
 
 pub fn extract_llvm_version(version: &str) -> Option<u32> {
-    let version_without_suffix = version.trim_end_matches("git").split('-').next().unwrap();
+    let pat = |c: char| !c.is_ascii_digit() && c != '.';
+    let version_without_suffix = match version.find(pat) {
+        Some(pos) => &version[..pos],
+        None => version,
+    };
     let components: Vec<u32> = version_without_suffix
         .split('.')
         .map(|s| s.parse().expect("Malformed version component"))
diff --git a/src/tools/compiletest/src/tests.rs b/src/tools/compiletest/src/tests.rs
index ea9bc1c1a5b..233f2e648dc 100644
--- a/src/tools/compiletest/src/tests.rs
+++ b/src/tools/compiletest/src/tests.rs
@@ -68,4 +68,8 @@ fn test_extract_llvm_version() {
     assert_eq!(extract_llvm_version("9.0.1-rust-1.43.0-dev"), Some(90001));
     assert_eq!(extract_llvm_version("9.3.1-rust-1.43.0-dev"), Some(90301));
     assert_eq!(extract_llvm_version("10.0.0-rust"), Some(100000));
+    assert_eq!(extract_llvm_version("11.1.0"), Some(110100));
+    assert_eq!(extract_llvm_version("12.0.0libcxx"), Some(120000));
+    assert_eq!(extract_llvm_version("12.0.0-rc3"), Some(120000));
+    assert_eq!(extract_llvm_version("13.0.0git"), Some(130000));
 }