move compile-fail tests to ui tests

gets more comprehensive coverage in `ui`
This commit is contained in:
Niko Matsakis 2016-10-19 17:17:35 -04:00
parent 222349931e
commit fa9ebfc74e
15 changed files with 125 additions and 11 deletions

View File

@ -8,7 +8,7 @@ error[E0276]: impl has stricter requirements than trait
| ^^^^^^^^^^^^^^^^^^^^^^^^ impl has extra requirement `U: 'a`
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= note: for more information, see issue #18937 <https://github.com/rust-lang/rust/issues/18937>
= note: for more information, see issue #37166 <https://github.com/rust-lang/rust/issues/37166>
note: lint level defined here
--> $DIR/proj-outlives-region.rs:12:9
|

View File

@ -0,0 +1,11 @@
error[E0276]: impl has stricter requirements than trait
--> $DIR/region-extra-2.rs:19:5
|
15 | fn renew<'b: 'a>(self) -> &'b mut [T];
| -------------------------------------- definition of `renew` from trait
...
19 | fn renew<'b: 'a>(self) -> &'b mut [T] where 'a: 'b {
| ^ impl has extra requirement `'a: 'b`
error: aborting due to previous error

View File

@ -11,16 +11,15 @@
#![allow(dead_code)]
#![deny(extra_requirement_in_impl)]
// Test that we elaborate `Type: 'region` constraints and infer various important things.
// Test that you cannot add an extra where clause in the impl relating
// two regions.
trait Master<'a, 'b> {
fn foo();
}
// `U: 'a` does not imply `V: 'a`
impl<'a, 'b> Master<'a, 'b> for () {
fn foo() where 'a: 'b { }
//~^ ERROR parameter type `V` may not live long enough
}
fn main() {

View File

@ -1,7 +1,7 @@
error[E0276]: impl has stricter requirements than trait
--> $DIR/region.rs:22:5
--> $DIR/region-extra.rs:22:5
|
17 | fn foo();
18 | fn foo();
| --------- definition of `foo` from trait
...
22 | fn foo() where 'a: 'b { }

View File

@ -8,7 +8,7 @@ error[E0276]: impl has stricter requirements than trait
| ^^^^^^^^^^^^^^^^^^^^^^^^ impl has extra requirement `V: 'a`
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= note: for more information, see issue #18937 <https://github.com/rust-lang/rust/issues/18937>
= note: for more information, see issue #37166 <https://github.com/rust-lang/rust/issues/37166>
note: lint level defined here
--> $DIR/region-unrelated.rs:12:9
|

View File

@ -10,6 +10,8 @@
// Tests that ty params get matched correctly when comparing
// an impl against a trait
//
// cc #26111
trait A {
fn b<C:Clone,D>(&self, x: C) -> C;

View File

@ -0,0 +1,14 @@
error[E0053]: method `b` has an incompatible type for trait
--> $DIR/reordered-type-param.rs:26:30
|
17 | fn b<C:Clone,D>(&self, x: C) -> C;
| - type in trait
...
26 | fn b<F:Clone,G>(&self, _x: G) -> G { panic!() } //~ ERROR method `b` has an incompatible type
| ^ expected type parameter, found a different type parameter
|
= note: expected type `fn(&E, F) -> F`
= note: found type `fn(&E, G) -> G`
error: aborting due to previous error

View File

@ -8,8 +8,10 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// Tests that an impl method's bounds aren't *more* restrictive
// than the trait method it's implementing
// Tests that impl can't add extra `F: Sync` bound aren't *more* restrictive
// than the trait method it's implementing.
//
// Regr test for #26111.
trait A {
fn b<C,D>(&self, x: C) -> C;
@ -20,8 +22,7 @@ struct E {
}
impl A for E {
fn b<F: Sync, G>(&self, _x: F) -> F { panic!() }
//~^ ERROR E0276
fn b<F: Sync, G>(&self, _x: F) -> F { panic!() } //~ ERROR E0276
}
fn main() {}

View File

@ -0,0 +1,11 @@
error[E0276]: impl has stricter requirements than trait
--> $DIR/trait-bound-on-type-parameter.rs:25:5
|
17 | fn b<C,D>(&self, x: C) -> C;
| ---------------------------- definition of `b` from trait
...
25 | fn b<F: Sync, G>(&self, _x: F) -> F { panic!() } //~ ERROR E0276
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ impl has extra requirement `F: std::marker::Sync`
error: aborting due to previous error

View File

@ -0,0 +1,65 @@
error[E0276]: impl has stricter requirements than trait
--> $DIR/traits-misc-mismatch-1.rs:36:5
|
23 | fn test_error1_fn<T: Eq>(&self);
| -------------------------------- definition of `test_error1_fn` from trait
...
36 | fn test_error1_fn<T: Ord>(&self) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ impl has extra requirement `T: std::cmp::Ord`
error[E0276]: impl has stricter requirements than trait
--> $DIR/traits-misc-mismatch-1.rs:40:5
|
24 | fn test_error2_fn<T: Eq + Ord>(&self);
| -------------------------------------- definition of `test_error2_fn` from trait
...
40 | fn test_error2_fn<T: Eq + B>(&self) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ impl has extra requirement `T: B`
error[E0276]: impl has stricter requirements than trait
--> $DIR/traits-misc-mismatch-1.rs:44:5
|
25 | fn test_error3_fn<T: Eq + Ord>(&self);
| -------------------------------------- definition of `test_error3_fn` from trait
...
44 | fn test_error3_fn<T: B + Eq>(&self) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ impl has extra requirement `T: B`
error[E0276]: impl has stricter requirements than trait
--> $DIR/traits-misc-mismatch-1.rs:54:5
|
28 | fn test_error5_fn<T: A>(&self);
| ------------------------------- definition of `test_error5_fn` from trait
...
54 | fn test_error5_fn<T: B>(&self) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ impl has extra requirement `T: B`
error[E0276]: impl has stricter requirements than trait
--> $DIR/traits-misc-mismatch-1.rs:60:5
|
30 | fn test_error7_fn<T: A>(&self);
| ------------------------------- definition of `test_error7_fn` from trait
...
60 | fn test_error7_fn<T: A + Eq>(&self) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ impl has extra requirement `T: std::cmp::Eq`
error[E0276]: impl has stricter requirements than trait
--> $DIR/traits-misc-mismatch-1.rs:63:5
|
31 | fn test_error8_fn<T: B>(&self);
| ------------------------------- definition of `test_error8_fn` from trait
...
63 | fn test_error8_fn<T: C>(&self) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ impl has extra requirement `T: C`
error[E0276]: impl has stricter requirements than trait
--> $DIR/traits-misc-mismatch-1.rs:76:5
|
72 | fn method<G:Getter<isize>>(&self);
| ---------------------------------- definition of `method` from trait
...
76 | fn method<G: Getter<usize>>(&self) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ impl has extra requirement `G: Getter<usize>`
error: aborting due to 7 previous errors

View File

@ -0,0 +1,11 @@
error[E0276]: impl has stricter requirements than trait
--> $DIR/traits-misc-mismatch-2.rs:23:5
|
19 | fn zip<B, U: Iterator<U>>(self, other: U) -> ZipIterator<Self, U>;
| ------------------------------------------------------------------ definition of `zip` from trait
...
23 | fn zip<B, U: Iterator<B>>(self, other: U) -> ZipIterator<T, U> {
| ^ impl has extra requirement `U: Iterator<B>`
error: aborting due to previous error