diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2015-02-11 10:32:21 -0500 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2015-02-12 13:29:52 -0500 |
| commit | 21fb420592bd4ee03e81efe7b2dbd7115e790e3a (patch) | |
| tree | b89a24699415c81845d7513b38eff1855de3b25a | |
| parent | 14141aca80a78dc8ec67bce463c5677ec0280264 (diff) | |
| download | rust-21fb420592bd4ee03e81efe7b2dbd7115e790e3a.tar.gz rust-21fb420592bd4ee03e81efe7b2dbd7115e790e3a.zip | |
Add test that shows how a cycle between the where-clauses on a type
and the type appearing in the trait would (previously) trigger an error message. The code is now accepted. No reported issue that I am aware of.
| -rw-r--r-- | src/test/run-pass/astconv-cycle-between-trait-and-type.rs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/test/run-pass/astconv-cycle-between-trait-and-type.rs b/src/test/run-pass/astconv-cycle-between-trait-and-type.rs new file mode 100644 index 00000000000..0c6d91eda26 --- /dev/null +++ b/src/test/run-pass/astconv-cycle-between-trait-and-type.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 we are able to successfully compile a setup where a trait +// (`Trait1`) references a struct (`SomeType<u32>`) which in turn +// carries a predicate that references the trait (`u32 : Trait1`, +// substituted). + +#![allow(dead_code)] + +trait Trait1 : Trait2<SomeType<u32>> { + fn dumb(&self) { } +} + +trait Trait2<A> { + fn dumber(&self, _: A) { } +} + +struct SomeType<A> + where A : Trait1 +{ + a: A +} + +impl Trait1 for u32 { } + +impl Trait2<SomeType<u32>> for u32 { } + +fn main() { } |
