Add tests for various issues
Fixes #11740. Fixes #19601. Fixes #22603 Fixes #22789. Fixes #26614. r? @Mark-Simulacrum.
This commit is contained in:
parent
78d8416caf
commit
5fe89e8eb1
38
src/test/compile-fail/issue-11740.rs
Normal file
38
src/test/compile-fail/issue-11740.rs
Normal file
@ -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
src/test/compile-fail/issue-19601.rs
Normal file
19
src/test/compile-fail/issue-19601.rs
Normal file
@ -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
src/test/compile-fail/issue-22603.rs
Normal file
23
src/test/compile-fail/issue-22603.rs
Normal file
@ -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
src/test/compile-fail/issue-22789.rs
Normal file
17
src/test/compile-fail/issue-22789.rs
Normal file
@ -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
src/test/compile-fail/issue-26614.rs
Normal file
27
src/test/compile-fail/issue-26614.rs
Normal file
@ -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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user