Skip to content

Commit

Permalink
rollup merge of rust-lang#20404: japaric/at-tests
Browse files Browse the repository at this point in the history
  • Loading branch information
alexcrichton committed Jan 2, 2015
2 parents 3dfb29e + 182db6e commit b51ff9f
Show file tree
Hide file tree
Showing 11 changed files with 255 additions and 0 deletions.
15 changes: 15 additions & 0 deletions src/test/auxiliary/issue_20389.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// 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.

#![feature(associated_types)]

pub trait T {
type C;
}
29 changes: 29 additions & 0 deletions src/test/compile-fail/issue-18819.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// 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.

#![feature(associated_types)]

trait Foo {
type Item;
}

struct X;

impl Foo for X {
type Item = bool;
}

fn print_x(_: &Foo, extra: &str) {
println!("{}", extra);
}

fn main() {
print_x(X); //~error this function takes 2 parameters but 1 parameter was supplied
}
27 changes: 27 additions & 0 deletions src/test/compile-fail/issue-19883.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// 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.

#![feature(associated_types)]

trait From<Src> {
type Output;

fn from(src: Src) -> <Self as From<Src>>::Output;
}

trait To {
// This is a typo, the return type should be `<Dst as From<Self>>::Output`
fn to<Dst: From<Self>>(self) -> <Dst as From<Self>>::Dst {
//~ error: the trait `core::kinds::Sized` is not implemented
From::from(self)
}
}

fn main() {}
25 changes: 25 additions & 0 deletions src/test/compile-fail/issue-20005.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// 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.

#![feature(associated_types)]

trait From<Src> {
type Result;

fn from(src: Src) -> Self::Result;
}

trait To {
fn to<Dst>(self) -> <Dst as From<Self>>::Result where Dst: From<Self> {
From::from(self) //~error: type annotations required
}
}

fn main() {}
18 changes: 18 additions & 0 deletions src/test/run-pass/issue-17732.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// 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.

#![feature(associated_types)]
trait Person {
type string;
}

struct Someone<P: Person>;

fn main() {}
23 changes: 23 additions & 0 deletions src/test/run-pass/issue-19479.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// 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.

#![feature(associated_types)]
trait Base {}
trait AssocA {
type X: Base;
}
trait AssocB {
type Y: Base;
}
impl<T: AssocA> AssocB for T {
type Y = <T as AssocA>::X;
}

fn main() {}
23 changes: 23 additions & 0 deletions src/test/run-pass/issue-19631.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// 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.

#![feature(associated_types)]

trait PoolManager {
type C;
}

struct InnerPool<M> {
manager: M,
}

impl<M> InnerPool<M> where M: PoolManager {}

fn main() {}
21 changes: 21 additions & 0 deletions src/test/run-pass/issue-19632.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// 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.

#![feature(associated_types)]

trait PoolManager {
type C;
}

struct InnerPool<M: PoolManager> {
manager: M,
}

fn main() {}
30 changes: 30 additions & 0 deletions src/test/run-pass/issue-19850.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// 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 `<Type as Trait>::Output` and `Self::Output` are accepted as type annotations in let
// bindings

#![feature(associated_types)]

trait Int {
fn one() -> Self;
fn leading_zeros(self) -> uint;
}

trait Foo {
type T : Int;

fn test(&self) {
let r: <Self as Foo>::T = Int::one();
let r: Self::T = Int::one();
}
}

fn main() {}
22 changes: 22 additions & 0 deletions src/test/run-pass/issue-20009.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// 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.

// Check that associated types are `Sized`

#![feature(associated_types)]

trait Trait {
type Output;

fn is_sized(&self) -> Self::Output;
fn wasnt_sized(&self) -> Self::Output { loop {} }
}

fn main() {}
22 changes: 22 additions & 0 deletions src/test/run-pass/issue-20389.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// 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.

// aux-build:issue_20389.rs

#![feature(associated_types)]
extern crate issue_20389;

struct Foo;

impl issue_20389::T for Foo {
type C = ();
}

fn main() {}

0 comments on commit b51ff9f

Please sign in to comment.