about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSantiago Pastorino <spastorino@gmail.com>2018-05-28 15:30:02 -0300
committerSantiago Pastorino <spastorino@gmail.com>2018-05-30 14:03:31 -0300
commit9df0a41321b8dd3fc48da9b34b3f79b0c37051b7 (patch)
tree56a1a5bd485370000fc0be0571b47fa6d1208e18
parent74d09399c1289a20b1c258153f005f2604f9ec46 (diff)
downloadrust-9df0a41321b8dd3fc48da9b34b3f79b0c37051b7.tar.gz
rust-9df0a41321b8dd3fc48da9b34b3f79b0c37051b7.zip
Add polonius compare mode
-rw-r--r--src/tools/compiletest/src/common.rs3
-rw-r--r--src/tools/compiletest/src/runtest.rs13
2 files changed, 14 insertions, 2 deletions
diff --git a/src/tools/compiletest/src/common.rs b/src/tools/compiletest/src/common.rs
index b2ce5ce52f7..951a72fec68 100644
--- a/src/tools/compiletest/src/common.rs
+++ b/src/tools/compiletest/src/common.rs
@@ -99,18 +99,21 @@ impl fmt::Display for Mode {
 #[derive(Clone, PartialEq)]
 pub enum CompareMode {
     Nll,
+    Polonius,
 }
 
 impl CompareMode {
     pub(crate) fn to_str(&self) -> &'static str {
         match *self {
             CompareMode::Nll => "nll",
+            CompareMode::Polonius => "polonius",
         }
     }
 
     pub fn parse(s: String) -> CompareMode {
         match s.as_str() {
             "nll" => CompareMode::Nll,
+            "polonius" => CompareMode::Polonius,
             x => panic!("unknown --compare-mode option: {}", x),
         }
     }
diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs
index 9ff80cc1d3c..f1e0c2bea0e 100644
--- a/src/tools/compiletest/src/runtest.rs
+++ b/src/tools/compiletest/src/runtest.rs
@@ -1729,6 +1729,9 @@ impl<'test> TestCx<'test> {
             Some(CompareMode::Nll) => {
                 rustc.args(&["-Zborrowck=mir", "-Ztwo-phase-borrows"]);
             }
+            Some(CompareMode::Polonius) => {
+                rustc.args(&["-Zpolonius", "-Zborrowck=mir", "-Ztwo-phase-borrows"]);
+            }
             None => {}
         }
 
@@ -2898,8 +2901,14 @@ impl<'test> TestCx<'test> {
             &self.config.compare_mode,
             kind,
         );
-        if !path.exists() && self.config.compare_mode.is_some() {
-            // fallback!
+
+        if !path.exists() {
+            if let Some(CompareMode::Polonius) = self.config.compare_mode {
+                path = expected_output_path(&self.testpaths, self.revision, &Some(CompareMode::Nll), kind);
+            }
+        }
+
+        if !path.exists() {
             path = expected_output_path(&self.testpaths, self.revision, &None, kind);
         }