about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAriel Ben-Yehuda <ariel.byd@gmail.com>2016-04-06 22:00:00 +0300
committerAriel Ben-Yehuda <arielb1@mail.tau.ac.il>2016-04-07 12:17:24 +0300
commit0ac5e48069bcd2e54fa72086d0a9a206cf1a7bcf (patch)
tree266572ac72e206331eddbde6edd38a61570dbffb
parent832b7075b6c2e4ed37978d00a7c629e468f3dab1 (diff)
test the substs ppaux code both with and without -Z verbose
-rw-r--r--src/librustc/traits/error_reporting.rs3
-rw-r--r--src/test/compile-fail/substs-ppaux.rs61
-rw-r--r--src/test/compile-fail/substs-verbose.rs47
3 files changed, 63 insertions, 48 deletions
diff --git a/src/librustc/traits/error_reporting.rs b/src/librustc/traits/error_reporting.rs
index 5b5bea012ea..6a9827387ef 100644
--- a/src/librustc/traits/error_reporting.rs
+++ b/src/librustc/traits/error_reporting.rs
@@ -436,7 +436,8 @@ pub fn report_selection_error<'a, 'tcx>(infcx: &InferCtxt<'a, 'tcx>,
                                 // If we can't show anything useful, try to find
                                 // similar impls.
 
-                                let impl_candidates = find_similar_impl_candidates(infcx, trait_ref);
+                                let impl_candidates =
+                                    find_similar_impl_candidates(infcx, trait_ref);
                                 if impl_candidates.len() > 0 {
                                     report_similar_impl_candidates(obligation.cause.span,
                                                                    &mut err, &impl_candidates);
diff --git a/src/test/compile-fail/substs-ppaux.rs b/src/test/compile-fail/substs-ppaux.rs
new file mode 100644
index 00000000000..851e31b942e
--- /dev/null
+++ b/src/test/compile-fail/substs-ppaux.rs
@@ -0,0 +1,61 @@
+// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+//
+// revisions: verbose normal
+//
+//[verbose] compile-flags: -Z verbose
+
+trait Foo<'b, 'c, S=u32> {
+    fn bar<'a, T>() where T: 'a {}
+    fn baz() {}
+}
+
+impl<'a,'b,T,S> Foo<'a, 'b, S> for T {}
+
+fn main() {}
+
+fn foo<'z>() where &'z (): Sized {
+    let x: () = <i8 as Foo<'static, 'static,  u8>>::bar::<'static, char>;
+    //[verbose]~^ ERROR mismatched types
+    //[verbose]~| expected `()`
+    //[verbose]~| found `fn() {<i8 as Foo<ReStatic, ReStatic, u8>>::bar::<ReStatic, char>}`
+    //[normal]~^^^^ ERROR mismatched types
+    //[normal]~| expected `()`
+    //[normal]~| found  `fn() {<i8 as Foo<'static, 'static, u8>>::bar::<'static, char>}`
+
+
+    let x: () = <i8 as Foo<'static, 'static,  u32>>::bar::<'static, char>;
+    //[verbose]~^ ERROR mismatched types
+    //[verbose]~| expected `()`
+    //[verbose]~| found `fn() {<i8 as Foo<ReStatic, ReStatic, u32>>::bar::<ReStatic, char>}`
+    //[normal]~^^^^ ERROR mismatched types
+    //[normal]~| expected `()`
+    //[normal]~| found `fn() {<i8 as Foo<'static, 'static>>::bar::<'static, char>}`
+
+    let x: () = <i8 as Foo<'static, 'static,  u8>>::baz;
+    //[verbose]~^ ERROR mismatched types
+    //[verbose]~| expected `()`
+    //[verbose]~| found `fn() {<i8 as Foo<ReStatic, ReStatic, u8>>::baz}`
+    //[normal]~^^^^ ERROR mismatched types
+    //[normal]~| expected `()`
+    //[normal]~| found `fn() {<i8 as Foo<'static, 'static, u8>>::baz}`
+
+    let x: () = foo::<'static>;
+    //[verbose]~^ ERROR mismatched types
+    //[verbose]~| expected `()`
+    //[verbose]~| found `fn() {foo::<ReStatic>}`
+    //[normal]~^^^^ ERROR mismatched types
+    //[normal]~| expected `()`
+    //[normal]~| found `fn() {foo::<'static>}`
+
+    <str as Foo<u8>>::bar;
+    //[verbose]~^ ERROR `str: std::marker::Sized` is not satisfied
+    //[normal]~^^ ERROR `str: std::marker::Sized` is not satisfied
+}
diff --git a/src/test/compile-fail/substs-verbose.rs b/src/test/compile-fail/substs-verbose.rs
deleted file mode 100644
index 0ee7e67bebb..00000000000
--- a/src/test/compile-fail/substs-verbose.rs
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-//
-// compile-flags: -Z verbose
-
-// TODO nikomatsakis: test with both verbose and without
-
-trait Foo<'b, 'c, S=u32> {
-    fn bar<'a, T>() where T: 'a {}
-    fn baz() {}
-}
-
-impl<'a,'b,T,S> Foo<'a, 'b, S> for T {}
-
-fn main() {}
-
-fn foo<'z>() where &'z (): Sized {
-    let x: () = <i8 as Foo<'static, 'static,  u8>>::bar::<'static, char>;
-    //~^ ERROR mismatched types
-    //~| expected `()`
-    //~| found `fn() {<i8 as Foo<ReStatic, ReStatic, u8>>::bar::<ReStatic, char>}`
-
-    let x: () = <i8 as Foo<'static, 'static,  u32>>::bar::<'static, char>;
-    //~^ ERROR mismatched types
-    //~| expected `()`
-    //~| found `fn() {<i8 as Foo<ReStatic, ReStatic, u32>>::bar::<ReStatic, char>}`
-
-    let x: () = <i8 as Foo<'static, 'static,  u8>>::baz;
-    //~^ ERROR mismatched types
-    //~| expected `()`
-    //~| found `fn() {<i8 as Foo<ReStatic, ReStatic, u8>>::baz}`
-
-    let x: () = foo::<'static>;
-    //~^ ERROR mismatched types
-    //~| expected `()`
-    //~| found `fn() {foo::<ReStatic>}`
-
-    <str as Foo<u8>>::bar;
-    //~^ ERROR `str: std::marker::Sized` is not satisfied
-}