Skip to content

Commit

Permalink
Rollup merge of #47344 - topecongiro:fixed-ices, r=alexcrichton
Browse files Browse the repository at this point in the history
Add tests to fixed issues.

Closes #36792. Closes #38091. Closes #39687. Closes #42148. Closes #42956.
  • Loading branch information
kennytm committed Jan 11, 2018
2 parents 3a87b5a + 9649c4a commit 5bd7d69
Show file tree
Hide file tree
Showing 5 changed files with 110 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/test/compile-fail/issue-39687.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Copyright 2018 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(fn_traits)]

fn main() {
<fn() as Fn()>::call;
//~^ ERROR associated type bindings are not allowed here [E0229]
}
17 changes: 17 additions & 0 deletions src/test/run-pass/issue-36792.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// Copyright 2018 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(conservative_impl_trait)]
fn foo() -> impl Copy {
foo
}
fn main() {
foo();
}
29 changes: 29 additions & 0 deletions src/test/run-pass/issue-38091.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// Copyright 2018 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(specialization)]

trait Iterate<'a> {
type Ty: Valid;
fn iterate(self);
}
impl<'a, T> Iterate<'a> for T where T: Check {
default type Ty = ();
default fn iterate(self) {}
}

trait Check {}
impl<'a, T> Check for T where <T as Iterate<'a>>::Ty: Valid {}

trait Valid {}

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

struct Zst;

fn main() {
unsafe { ::std::ptr::write_volatile(1 as *mut Zst, Zst) }
}
33 changes: 33 additions & 0 deletions src/test/run-pass/issue-42956.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
// Copyright 2018 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_consts)]

impl A for i32 {
type Foo = u32;
}
impl B for u32 {
const BAR: i32 = 0;
}

trait A {
type Foo: B;
}

trait B {
const BAR: i32;
}

fn generic<T: A>() {
// This panics if the universal function call syntax is used as well
println!("{}", T::Foo::BAR);
}

fn main() {}

0 comments on commit 5bd7d69

Please sign in to comment.