Add tests for super-builtin-kind capabilities (#7083)
This commit is contained in:
parent
3c3bfb4c3c
commit
95089d3793
3 changed files with 78 additions and 0 deletions
|
|
@ -0,0 +1,25 @@
|
|||
// Copyright 2013 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.
|
||||
|
||||
trait Bar : Send { }
|
||||
trait Foo : Bar { }
|
||||
|
||||
impl <T: Send> Foo for T { }
|
||||
impl <T: Send> Bar for T { }
|
||||
|
||||
fn foo<T: Foo>(val: T, chan: std::comm::Chan<T>) {
|
||||
chan.send(val);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let (p,c) = std::comm::stream();
|
||||
foo(31337, c);
|
||||
assert!(p.recv() == 31337);
|
||||
}
|
||||
30
src/test/run-pass/builtin-superkinds-capabilities-xc.rs
Normal file
30
src/test/run-pass/builtin-superkinds-capabilities-xc.rs
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
// Copyright 2013 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.
|
||||
|
||||
// aux-build:trait_superkinds_in_metadata.rs
|
||||
|
||||
extern mod trait_superkinds_in_metadata;
|
||||
use trait_superkinds_in_metadata::{Foo, Bar};
|
||||
|
||||
#[deriving(Eq)]
|
||||
struct X<T>(T);
|
||||
|
||||
impl <T: Freeze> Bar for X<T> { }
|
||||
impl <T: Freeze+Send> Foo for X<T> { }
|
||||
|
||||
fn foo<T: Foo>(val: T, chan: std::comm::Chan<T>) {
|
||||
chan.send(val);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let (p,c) = std::comm::stream();
|
||||
foo(X(31337), c);
|
||||
assert!(p.recv() == X(31337));
|
||||
}
|
||||
23
src/test/run-pass/builtin-superkinds-capabilities.rs
Normal file
23
src/test/run-pass/builtin-superkinds-capabilities.rs
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
// Copyright 2013 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.
|
||||
|
||||
trait Foo : Send { }
|
||||
|
||||
impl <T: Send> Foo for T { }
|
||||
|
||||
fn foo<T: Foo>(val: T, chan: std::comm::Chan<T>) {
|
||||
chan.send(val);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let (p,c) = std::comm::stream();
|
||||
foo(31337, c);
|
||||
assert!(p.recv() == 31337);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue