diff options
| author | Ralf Jung <post@ralfj.de> | 2018-02-05 21:20:57 +0100 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2018-02-05 21:20:57 +0100 |
| commit | 2aae22746e70eea96b0959f6e7b603576e14f3bb (patch) | |
| tree | efae49d137fc78caa3e0a148e73ad82c4efc88f4 /src/test | |
| parent | c83dd0306215e21ce5f8dab92edcc3ac9795f3da (diff) | |
| download | rust-2aae22746e70eea96b0959f6e7b603576e14f3bb.tar.gz rust-2aae22746e70eea96b0959f6e7b603576e14f3bb.zip | |
Warn about more ignored bounds on type aliases
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/compile-fail/dst-bad-assign-3.rs | 2 | ||||
| -rw-r--r-- | src/test/compile-fail/private-in-public-warn.rs | 2 | ||||
| -rw-r--r-- | src/test/ui/param-bounds-ignored.rs | 33 | ||||
| -rw-r--r-- | src/test/ui/param-bounds-ignored.stderr | 18 |
4 files changed, 53 insertions, 2 deletions
diff --git a/src/test/compile-fail/dst-bad-assign-3.rs b/src/test/compile-fail/dst-bad-assign-3.rs index 1c3bad5ba56..759da7b2bde 100644 --- a/src/test/compile-fail/dst-bad-assign-3.rs +++ b/src/test/compile-fail/dst-bad-assign-3.rs @@ -13,7 +13,7 @@ #![feature(unsized_tuple_coercion)] type Fat<T: ?Sized> = (isize, &'static str, T); -//~^ WARNING trait bounds are not (yet) enforced +//~^ WARNING bounds are ignored #[derive(PartialEq,Eq)] struct Bar; diff --git a/src/test/compile-fail/private-in-public-warn.rs b/src/test/compile-fail/private-in-public-warn.rs index dfcf4dc01b8..aa91ce27c37 100644 --- a/src/test/compile-fail/private-in-public-warn.rs +++ b/src/test/compile-fail/private-in-public-warn.rs @@ -58,7 +58,7 @@ mod traits { pub trait PubTr {} pub type Alias<T: PrivTr> = T; //~ ERROR private trait `traits::PrivTr` in public interface - //~^ WARN trait bounds are not (yet) enforced in type definitions + //~^ WARN bounds are ignored in type aliases //~| WARNING hard error pub trait Tr1: PrivTr {} //~ ERROR private trait `traits::PrivTr` in public interface //~^ WARNING hard error diff --git a/src/test/ui/param-bounds-ignored.rs b/src/test/ui/param-bounds-ignored.rs new file mode 100644 index 00000000000..9e09102f2d4 --- /dev/null +++ b/src/test/ui/param-bounds-ignored.rs @@ -0,0 +1,33 @@ +// Copyright 2014 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. + +// must-compile-successfully + +use std::rc::Rc; + +type SVec<T: Send> = Vec<T>; +type VVec<'b, 'a: 'b> = Vec<&'a i32>; +type WVec<'b, T: 'b> = Vec<T>; + +fn foo<'a>(y: &'a i32) { + // If the bounds above would matter, the code below would be rejected. + let mut x : SVec<_> = Vec::new(); + x.push(Rc::new(42)); + + let mut x : VVec<'static, 'a> = Vec::new(); + x.push(y); + + let mut x : WVec<'static, & 'a i32> = Vec::new(); + x.push(y); +} + +fn main() { + foo(&42); +} diff --git a/src/test/ui/param-bounds-ignored.stderr b/src/test/ui/param-bounds-ignored.stderr new file mode 100644 index 00000000000..a14d416aaa7 --- /dev/null +++ b/src/test/ui/param-bounds-ignored.stderr @@ -0,0 +1,18 @@ +warning[E0122]: bounds are ignored in type aliases + --> $DIR/param-bounds-ignored.rs:15:1 + | +15 | type SVec<T: Send> = Vec<T>; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +warning[E0122]: bounds are ignored in type aliases + --> $DIR/param-bounds-ignored.rs:16:1 + | +16 | type VVec<'b, 'a: 'b> = Vec<&'a i32>; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +warning[E0122]: bounds are ignored in type aliases + --> $DIR/param-bounds-ignored.rs:17:1 + | +17 | type WVec<'b, T: 'b> = Vec<T>; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + |
