diff options
Diffstat (limited to 'src/test/run-pass')
| -rw-r--r-- | src/test/run-pass/associated-types-method.rs | 36 | ||||
| -rw-r--r-- | src/test/run-pass/issue-25679.rs | 28 |
2 files changed, 64 insertions, 0 deletions
diff --git a/src/test/run-pass/associated-types-method.rs b/src/test/run-pass/associated-types-method.rs new file mode 100644 index 00000000000..b57687a49fa --- /dev/null +++ b/src/test/run-pass/associated-types-method.rs @@ -0,0 +1,36 @@ +// Copyright 2015 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. + +// Test that methods whose impl-trait-ref contains associated types +// are supported. + +trait Device { + type Resources; +} +struct Foo<D, R>(D, R); + +trait Tr { + fn present(&self) {} +} + +impl<D: Device> Tr for Foo<D, D::Resources> { + fn present(&self) {} +} + +struct Res; +struct Dev; +impl Device for Dev { + type Resources = Res; +} + +fn main() { + let foo = Foo(Dev, Res); + foo.present(); +} diff --git a/src/test/run-pass/issue-25679.rs b/src/test/run-pass/issue-25679.rs new file mode 100644 index 00000000000..0ba7feece60 --- /dev/null +++ b/src/test/run-pass/issue-25679.rs @@ -0,0 +1,28 @@ +// Copyright 2015 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 Device { + type Resources; +} +struct Foo<D, R>(D, R); + +impl<D: Device> Foo<D, D::Resources> { + fn present(&self) {} +} + +struct Res; +struct Dev; + +impl Device for Dev { type Resources = Res; } + +fn main() { + let foo = Foo(Dev, Res); + foo.present(); +} |
