Skip to content

Commit

Permalink
Add tests for various issues
Browse files Browse the repository at this point in the history
  • Loading branch information
MaloJaffre committed Jun 18, 2017
1 parent 78d8416 commit 5fe89e8
Show file tree
Hide file tree
Showing 5 changed files with 124 additions and 0 deletions.
38 changes: 38 additions & 0 deletions src/test/compile-fail/issue-11740.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// 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(rustc_attrs)]
#![allow(warnings)]

struct Attr {
name: String,
value: String,
}

struct Element {
attrs: Vec<Box<Attr>>,
}

impl Element {
pub unsafe fn get_attr<'a>(&'a self, name: &str) {
self.attrs
.iter()
.find(|attr| {
let attr: &&Box<Attr> = std::mem::transmute(attr);
true
});
}
}

#[rustc_error]
fn main() { //~ ERROR compilation successful
let element = Element { attrs: Vec::new() };
let _ = unsafe { element.get_attr("foo") };
}
19 changes: 19 additions & 0 deletions src/test/compile-fail/issue-19601.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// 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(rustc_attrs)]
#![allow(warnings)]

trait A<T> {}
struct B<T> where B<T>: A<B<T>> { t: T }

#[rustc_error]
fn main() { //~ ERROR compilation successful
}
23 changes: 23 additions & 0 deletions src/test/compile-fail/issue-22603.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// 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(unboxed_closures, fn_traits, rustc_attrs)]

struct Foo;

impl<A> FnOnce<(A,)> for Foo {
type Output = ();
extern "rust-call" fn call_once(self, (_,): (A,)) {
}
}
#[rustc_error]
fn main() { //~ ERROR compilation successful
println!("{:?}", Foo("bar"));
}
17 changes: 17 additions & 0 deletions src/test/compile-fail/issue-22789.rs
Original file line number Diff line number Diff line change
@@ -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(unboxed_closures, fn_traits, rustc_attrs)]

#[rustc_error]
fn main() { //~ ERROR compilation successful
let k = |x: i32| { x + 1 };
Fn::call(&k, (0,));
}
27 changes: 27 additions & 0 deletions src/test/compile-fail/issue-26614.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// 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(rustc_attrs)]
#![allow(warnings)]

trait Mirror {
type It;
}

impl<T> Mirror for T {
type It = Self;
}


#[rustc_error]
fn main() { //~ ERROR compilation successful
let c: <u32 as Mirror>::It = 5;
const CCCC: <u32 as Mirror>::It = 5;
}

0 comments on commit 5fe89e8

Please sign in to comment.