diff options
| author | Sunjay Varma <varma.sunjay@gmail.com> | 2017-11-09 22:42:29 -0500 |
|---|---|---|
| committer | Sunjay Varma <varma.sunjay@gmail.com> | 2017-12-01 01:26:29 -0500 |
| commit | 332a3cb169aa41c961fdc2244b005bc31a2e9a74 (patch) | |
| tree | d2d21c0c2adad3ef8ceb7ffe2206be593a347e1c | |
| parent | 83efebc5393624072526720b62f03e1c1f5e7b25 (diff) | |
| download | rust-332a3cb169aa41c961fdc2244b005bc31a2e9a74.tar.gz rust-332a3cb169aa41c961fdc2244b005bc31a2e9a74.zip | |
More testing for generic associated types parsing
| -rw-r--r-- | src/test/run-pass/rfc1598-generic-associated-types/generic-associated-types-where.rs (renamed from src/test/run-pass/rfc1598-generic-associated-types/where.rs) | 0 | ||||
| -rw-r--r-- | src/test/run-pass/rfc1598-generic-associated-types/streaming_iterator.rs | 3 | ||||
| -rw-r--r-- | src/test/run-pass/rfc1598-generic-associated-types/whitespace-before-generics.rs | 35 | ||||
| -rw-r--r-- | src/test/ui/rfc1598-generic-associated-types/empty_generics.rs | 17 | ||||
| -rw-r--r-- | src/test/ui/rfc1598-generic-associated-types/generic_associated_types_equals.rs | 18 |
5 files changed, 72 insertions, 1 deletions
diff --git a/src/test/run-pass/rfc1598-generic-associated-types/where.rs b/src/test/run-pass/rfc1598-generic-associated-types/generic-associated-types-where.rs index 269e5dc26fc..269e5dc26fc 100644 --- a/src/test/run-pass/rfc1598-generic-associated-types/where.rs +++ b/src/test/run-pass/rfc1598-generic-associated-types/generic-associated-types-where.rs diff --git a/src/test/run-pass/rfc1598-generic-associated-types/streaming_iterator.rs b/src/test/run-pass/rfc1598-generic-associated-types/streaming_iterator.rs index fd476e2592d..58ec14d1075 100644 --- a/src/test/run-pass/rfc1598-generic-associated-types/streaming_iterator.rs +++ b/src/test/run-pass/rfc1598-generic-associated-types/streaming_iterator.rs @@ -25,7 +25,8 @@ struct Foo<T: StreamingIterator> { // Users can bound parameters by the type constructed by that trait's associated type constructor // of a trait using HRTB. Both type equality bounds and trait bounds of this kind are valid: -//fn foo<T: for<'a> StreamingIterator<Item<'a>=&'a [i32]>>(iter: T) { ... } +//FIXME(sunjay): This next line should parse and be valid +//fn foo<T: for<'a> StreamingIterator<Item<'a>=&'a [i32]>>(iter: T) { /* ... */ } fn foo<T>(iter: T) where T: StreamingIterator, for<'a> T::Item<'a>: Display { /* ... */ } fn main() {} diff --git a/src/test/run-pass/rfc1598-generic-associated-types/whitespace-before-generics.rs b/src/test/run-pass/rfc1598-generic-associated-types/whitespace-before-generics.rs new file mode 100644 index 00000000000..892a925f3d5 --- /dev/null +++ b/src/test/run-pass/rfc1598-generic-associated-types/whitespace-before-generics.rs @@ -0,0 +1,35 @@ +// Copyright 2012 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. + +#![feature(generic_associated_types)] + +// Checking the interaction with this other feature +#![feature(associated_type_defaults)] + +use std::fmt::{Display, Debug}; + +trait Foo { + type Assoc where Self: Sized; + type Assoc2 <T >where T: Display; + type WithDefault <T> = Iterator <Item=T> where T: Debug; + // No generics on this associated type + type NoGenerics; +} + +struct Bar; + +impl Foo for Bar { + type Assoc = usize; + type Assoc2 <T> = Vec<T>; + type WithDefault<'a, T> = &'a Iterator<T>; + type NoGenerics = f64; +} + +fn main() {} diff --git a/src/test/ui/rfc1598-generic-associated-types/empty_generics.rs b/src/test/ui/rfc1598-generic-associated-types/empty_generics.rs new file mode 100644 index 00000000000..a80875d28b3 --- /dev/null +++ b/src/test/ui/rfc1598-generic-associated-types/empty_generics.rs @@ -0,0 +1,17 @@ +// Copyright 2017 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. + +#![feature(generic_associated_types)] + +trait Foo { + type Bar<,>; +} + +fn main() {} diff --git a/src/test/ui/rfc1598-generic-associated-types/generic_associated_types_equals.rs b/src/test/ui/rfc1598-generic-associated-types/generic_associated_types_equals.rs new file mode 100644 index 00000000000..6cb2aaf47ae --- /dev/null +++ b/src/test/ui/rfc1598-generic-associated-types/generic_associated_types_equals.rs @@ -0,0 +1,18 @@ +// Copyright 2017 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. + +#![feature(generic_associated_types)] + +trait Foo { + type Bar<T=usize>; + type X<T> where T = f64; +} + +fn main() {} |
