]> git.lizzy.rs Git - rust.git/commitdiff
test the substs ppaux code both with and without -Z verbose
authorAriel Ben-Yehuda <ariel.byd@gmail.com>
Wed, 6 Apr 2016 19:00:00 +0000 (22:00 +0300)
committerAriel Ben-Yehuda <arielb1@mail.tau.ac.il>
Thu, 7 Apr 2016 09:17:24 +0000 (12:17 +0300)
src/librustc/traits/error_reporting.rs
src/test/compile-fail/substs-ppaux.rs [new file with mode: 0644]
src/test/compile-fail/substs-verbose.rs [deleted file]

index 5b5bea012ead0246fa96e9f8d6926b7a8b82f920..6a9827387efc5889bae56f5106d82c105e5e9f12 100644 (file)
@@ -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 (file)
index 0000000..851e31b
--- /dev/null
@@ -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 (file)
index 0ee7e67..0000000
+++ /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
-}