From 0ac5e48069bcd2e54fa72086d0a9a206cf1a7bcf Mon Sep 17 00:00:00 2001 From: Ariel Ben-Yehuda Date: Wed, 6 Apr 2016 22:00:00 +0300 Subject: [PATCH] test the substs ppaux code both with and without -Z verbose --- src/librustc/traits/error_reporting.rs | 3 +- src/test/compile-fail/substs-ppaux.rs | 61 +++++++++++++++++++++++++ src/test/compile-fail/substs-verbose.rs | 47 ------------------- 3 files changed, 63 insertions(+), 48 deletions(-) create mode 100644 src/test/compile-fail/substs-ppaux.rs delete mode 100644 src/test/compile-fail/substs-verbose.rs 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 or the MIT license +// , 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: () = >::bar::<'static, char>; + //[verbose]~^ ERROR mismatched types + //[verbose]~| expected `()` + //[verbose]~| found `fn() {>::bar::}` + //[normal]~^^^^ ERROR mismatched types + //[normal]~| expected `()` + //[normal]~| found `fn() {>::bar::<'static, char>}` + + + let x: () = >::bar::<'static, char>; + //[verbose]~^ ERROR mismatched types + //[verbose]~| expected `()` + //[verbose]~| found `fn() {>::bar::}` + //[normal]~^^^^ ERROR mismatched types + //[normal]~| expected `()` + //[normal]~| found `fn() {>::bar::<'static, char>}` + + let x: () = >::baz; + //[verbose]~^ ERROR mismatched types + //[verbose]~| expected `()` + //[verbose]~| found `fn() {>::baz}` + //[normal]~^^^^ ERROR mismatched types + //[normal]~| expected `()` + //[normal]~| found `fn() {>::baz}` + + let x: () = foo::<'static>; + //[verbose]~^ ERROR mismatched types + //[verbose]~| expected `()` + //[verbose]~| found `fn() {foo::}` + //[normal]~^^^^ ERROR mismatched types + //[normal]~| expected `()` + //[normal]~| found `fn() {foo::<'static>}` + + >::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 or the MIT license -// , 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: () = >::bar::<'static, char>; - //~^ ERROR mismatched types - //~| expected `()` - //~| found `fn() {>::bar::}` - - let x: () = >::bar::<'static, char>; - //~^ ERROR mismatched types - //~| expected `()` - //~| found `fn() {>::bar::}` - - let x: () = >::baz; - //~^ ERROR mismatched types - //~| expected `()` - //~| found `fn() {>::baz}` - - let x: () = foo::<'static>; - //~^ ERROR mismatched types - //~| expected `()` - //~| found `fn() {foo::}` - - >::bar; - //~^ ERROR `str: std::marker::Sized` is not satisfied -}