Add tests for self type using builtin kinds. (#7083)
This commit is contained in:
parent
cdbdfe88a5
commit
5796e9e49c
26
src/test/compile-fail/builtin-superkinds-self-type.rs
Normal file
26
src/test/compile-fail/builtin-superkinds-self-type.rs
Normal file
@ -0,0 +1,26 @@
|
||||
// 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.
|
||||
|
||||
// Tests (negatively) the ability for the Self type in default methods
|
||||
// to use capabilities granted by builtin kinds as supertraits.
|
||||
|
||||
trait Foo : Freeze {
|
||||
fn foo(self, chan: std::comm::Chan<Self>) {
|
||||
chan.send(self); //~ ERROR does not fulfill `Send`
|
||||
}
|
||||
}
|
||||
|
||||
impl <T: Freeze> Foo for T { }
|
||||
|
||||
fn main() {
|
||||
let (p,c) = std::comm::stream();
|
||||
1193182.foo(c);
|
||||
assert!(p.recv() == 1193182);
|
||||
}
|
26
src/test/run-pass/builtin-superkinds-self-type.rs
Normal file
26
src/test/run-pass/builtin-superkinds-self-type.rs
Normal file
@ -0,0 +1,26 @@
|
||||
// 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.
|
||||
|
||||
// Tests the ability for the Self type in default methods to use
|
||||
// capabilities granted by builtin kinds as supertraits.
|
||||
|
||||
trait Foo : Send {
|
||||
fn foo(self, chan: std::comm::Chan<Self>) {
|
||||
chan.send(self);
|
||||
}
|
||||
}
|
||||
|
||||
impl <T: Send> Foo for T { }
|
||||
|
||||
fn main() {
|
||||
let (p,c) = std::comm::stream();
|
||||
1193182.foo(c);
|
||||
assert!(p.recv() == 1193182);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user