about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJonathan Turner <jturner@mozilla.com>2016-05-24 07:40:09 -0400
committerJonathan Turner <jturner@mozilla.com>2016-05-24 07:40:09 -0400
commit9cc8debeb746826604858be86e2f6e5cce29026c (patch)
treed894db819a229db296913bd3ee1cba7c6ffb16e0
parent428099233a80018bc9740a09889391cd97087de4 (diff)
Move issue-26480 cfail to ui test. Fix #33763
-rw-r--r--src/test/run-make/unicode-input/span_length.rs65
-rw-r--r--src/test/ui/mismatched_types/issue-26480.rs (renamed from src/test/compile-fail/issue-26480.rs)12
-rw-r--r--src/test/ui/mismatched_types/issue-26480.stderr17
3 files changed, 63 insertions, 31 deletions
diff --git a/src/test/run-make/unicode-input/span_length.rs b/src/test/run-make/unicode-input/span_length.rs
index 3963d20df88..da8769e616c 100644
--- a/src/test/run-make/unicode-input/span_length.rs
+++ b/src/test/run-make/unicode-input/span_length.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(rand, core)]
+#![feature(rand)]
 
 use std::fs::File;
 use std::io::prelude::*;
@@ -18,6 +18,11 @@ use std::process::Command;
 use std::__rand::{thread_rng, Rng};
 use std::{char, env};
 
+pub fn check_old_skool() -> bool {
+    use std::env;
+    env::var("RUST_NEW_ERROR_FORMAT").is_err()
+}
+
 // creates a file with `fn main() { <random ident> }` and checks the
 // compiler emits a span of the appropriate length (for the
 // "unresolved name" message); currently just using the number of code
@@ -65,10 +70,17 @@ fn main() {
 
         let err = String::from_utf8_lossy(&result.stderr);
 
-        // the span should end the line (e.g no extra ~'s)
-        let expected_span = format!("^{}\n", repeat("~").take(n - 1)
-                                                        .collect::<String>());
-        assert!(err.contains(&expected_span));
+        if check_old_skool() {
+            // the span should end the line (e.g no extra ~'s)
+            let expected_span = format!("^{}\n", repeat("~").take(n - 1)
+                                                            .collect::<String>());
+            assert!(err.contains(&expected_span));
+        } else {
+            // the span should end the line (e.g no extra ~'s)
+            let expected_span = format!("^{}\n", repeat("^").take(n - 1)
+                                                            .collect::<String>());
+            assert!(err.contains(&expected_span));
+        }
     }
 
     // Test multi-column characters and tabs
@@ -77,9 +89,6 @@ fn main() {
                        r#"extern "路濫狼á́́" fn foo() {{}} extern "路濫狼á́" fn bar() {{}}"#);
     }
 
-    // Extra characters. Every line is preceded by `filename:lineno <actual code>`
-    let offset = main_file.to_str().unwrap().len() + 3;
-
     let result = Command::new("sh")
                          .arg("-c")
                          .arg(format!("{} {}",
@@ -91,17 +100,31 @@ fn main() {
 
     // Test both the length of the snake and the leading spaces up to it
 
-    // First snake is 8 ~s long, with 7 preceding spaces (excluding file name/line offset)
-    let expected_span = format!("\n{}^{}\n",
-                                repeat(" ").take(offset + 7).collect::<String>(),
-                                repeat("~").take(8).collect::<String>());
-    assert!(err.contains(&expected_span));
-    // Second snake is only 7 ~s long, with 36 preceding spaces,
-    // because rustc counts chars() now rather than width(). This
-    // is because width() functions are to be removed from
-    // librustc_unicode
-    let expected_span = format!("\n{}^{}\n",
-                                repeat(" ").take(offset + 36).collect::<String>(),
-                                repeat("~").take(7).collect::<String>());
-    assert!(err.contains(&expected_span));
+    if check_old_skool() {
+        // Extra characters. Every line is preceded by `filename:lineno <actual code>`
+        let offset = main_file.to_str().unwrap().len() + 3;
+
+        // First snake is 8 ~s long, with 7 preceding spaces (excluding file name/line offset)
+        let expected_span = format!("\n{}^{}\n",
+                                    repeat(" ").take(offset + 7).collect::<String>(),
+                                    repeat("~").take(8).collect::<String>());
+        assert!(err.contains(&expected_span));
+        // Second snake is only 7 ~s long, with 36 preceding spaces,
+        // because rustc counts chars() now rather than width(). This
+        // is because width() functions are to be removed from
+        // librustc_unicode
+        let expected_span = format!("\n{}^{}\n",
+                                    repeat(" ").take(offset + 36).collect::<String>(),
+                                    repeat("~").take(7).collect::<String>());
+        assert!(err.contains(&expected_span));
+    } else {
+        let expected_span = format!("\n  |>{}{}\n",
+                                    repeat(" ").take(8).collect::<String>(),
+                                    repeat("^").take(9).collect::<String>());
+        assert!(err.contains(&expected_span));
+        let expected_span = format!("\n  |>{}{}\n",
+                                    repeat(" ").take(37).collect::<String>(),
+                                    repeat("^").take(8).collect::<String>());
+        assert!(err.contains(&expected_span));
+    }
 }
diff --git a/src/test/compile-fail/issue-26480.rs b/src/test/ui/mismatched_types/issue-26480.rs
index 634a4014e11..516d92372e7 100644
--- a/src/test/compile-fail/issue-26480.rs
+++ b/src/test/ui/mismatched_types/issue-26480.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// rustc-env:RUST_NEW_ERROR_FORMAT
 extern {
     fn write(fildes: i32, buf: *const i8, nbyte: u64) -> i64;
 }
@@ -24,25 +25,16 @@ macro_rules! write {
         unsafe {
             write(stdout, $arr.as_ptr() as *const i8,
                   $arr.len() * size_of($arr[0]));
-            //~^ ERROR mismatched types
-            //~| expected u64, found usize
-            //~| expected type
-            //~| found type
         }
     }}
 }
 
 macro_rules! cast {
-    ($x:expr) => ($x as ()) //~ ERROR non-scalar cast
+    ($x:expr) => ($x as ()) 
 }
 
 fn main() {
     let hello = ['H', 'e', 'y'];
     write!(hello);
-    //~^ NOTE in this expansion of write!
-    //~| NOTE in this expansion of write!
-    //~| NOTE in this expansion of write!
-
     cast!(2);
-    //~^ NOTE in this expansion of cast!
 }
diff --git a/src/test/ui/mismatched_types/issue-26480.stderr b/src/test/ui/mismatched_types/issue-26480.stderr
new file mode 100644
index 00000000000..48bb546b382
--- /dev/null
+++ b/src/test/ui/mismatched_types/issue-26480.stderr
@@ -0,0 +1,17 @@
+error: mismatched types [--explain E0308]
+  --> $DIR/issue-26480.rs:27:19
+   |>
+27 |>                   $arr.len() * size_of($arr[0]));
+   |>                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected u64, found usize
+$DIR/issue-26480.rs:38:5: 38:19: note: in this expansion of write! (defined in $DIR/issue-26480.rs)
+
+
+error: non-scalar cast: `_` as `()`
+  --> $DIR/issue-26480.rs:33:19
+   |>
+33 |>     ($x:expr) => ($x as ())
+   |>                   ^^^^^^^^
+$DIR/issue-26480.rs:39:5: 39:14: note: in this expansion of cast! (defined in $DIR/issue-26480.rs)
+
+
+error: aborting due to 2 previous errors