Skip to content

Commit

Permalink
Rollup merge of rust-lang#42724 - Mark-Simulacrum:tests, r=alexcrichton
Browse files Browse the repository at this point in the history
Add tests for a few issues.

Fixes rust-lang#41998
Fixes rust-lang#38381
Fixes rust-lang#37515
Fixes rust-lang#37510
Fixes rust-lang#37508
Fixes rust-lang#37366
Fixes rust-lang#37323
Fixes rust-lang#37051
Fixes rust-lang#36839
Fixes rust-lang#35570
Fixes rust-lang#34373
Fixes rust-lang#34222

Certainly not all of the E-needstest issues right now, but I started to get bored.
  • Loading branch information
Mark-Simulacrum authored Jun 22, 2017
2 parents ab5bec2 + 622e8c0 commit abba6e8
Show file tree
Hide file tree
Showing 13 changed files with 325 additions and 0 deletions.
13 changes: 13 additions & 0 deletions src/test/compile-fail/issue-34222-1.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// 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.

fn main() {
/// comment //~ ERROR found a documentation comment that doesn't document anything
}
18 changes: 18 additions & 0 deletions src/test/compile-fail/issue-34222.rs
Original file line number Diff line number Diff line change
@@ -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(rustc_attrs)]
#![allow(warnings)]

#[rustc_error]
fn main() { //~ ERROR compilation successful
/// crash
let x = 0;
}
21 changes: 21 additions & 0 deletions src/test/compile-fail/issue-34373.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// 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.

#![allow(warnings)]

trait Trait<T> {
fn foo(_: T) {}
}

pub struct Foo<T = Box<Trait<DefaultFoo>>>;
type DefaultFoo = Foo; //~ ERROR unsupported cyclic reference

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

use std::mem;

trait Trait1<T> {}
trait Trait2<'a> {
type Ty;
}

fn _ice(param: Box<for <'a> Trait1<<() as Trait2<'a>>::Ty>>) {
let _e: (usize, usize) = unsafe{mem::transmute(param)};
}

trait Lifetime<'a> {
type Out;
}
impl<'a> Lifetime<'a> for () {
type Out = &'a ();
}
fn foo<'a>(x: &'a ()) -> <() as Lifetime<'a>>::Out {
x
}

fn takes_lifetime(_f: for<'a> fn(&'a ()) -> <() as Lifetime<'a>>::Out) {
}

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

pub trait Foo {
type Bar;
}

pub trait Broken {
type Assoc;
fn broken(&self) where Self::Assoc: Foo;
}

impl<T> Broken for T {
type Assoc = ();
fn broken(&self) where Self::Assoc: Foo {
let _x: <Self::Assoc as Foo>::Bar;
}
}

#[rustc_error]
fn main() { //~ ERROR compilation successful
let _m: &Broken<Assoc=()> = &();
}
29 changes: 29 additions & 0 deletions src/test/compile-fail/issue-37051.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// 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, associated_type_defaults)]
#![allow(warnings)]

trait State: Sized {
type NextState: State = StateMachineEnded;
fn execute(self) -> Option<Self::NextState>;
}

struct StateMachineEnded;

impl State for StateMachineEnded {
fn execute(self) -> Option<Self::NextState> {
None
}
}

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

#[derive(Debug)]
struct Point {
}

struct NestedA<'a, 'b> {
x: &'a NestedB<'b>
//~^ ERROR E0491
}

struct NestedB<'a> {
x: &'a i32,
}

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

macro_rules! interrupt_handler {
() => {
unsafe fn _interrupt_handler() {
asm!("pop eax" :::: "intel");
}
}
}
interrupt_handler!{}

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

#![no_std]
#![feature(rustc_attrs, thread_local, lang_items)]

#[lang = "panic_fmt"] fn panic_fmt() -> ! { loop {} }
#[lang = "eh_personality"] extern fn eh_personality() {}

pub struct BB;

#[thread_local]
static mut KEY: Key = Key {
inner: BB,
dtor_running: false,
};

pub unsafe fn set() -> Option<&'static BB> {
if KEY.dtor_running {
return None
}
Some(&KEY.inner)
}

pub struct Key {
inner: BB,
dtor_running: bool,
}

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

fn foo(_: &mut i32) -> bool { true }

#[rustc_error]
fn main() { //~ ERROR compilation successful
let opt = Some(92);
let mut x = 62;

if let Some(_) = opt {

} else if foo(&mut x) {

}
}
18 changes: 18 additions & 0 deletions src/test/compile-fail/issue-37515.rs
Original file line number Diff line number Diff line change
@@ -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(rustc_attrs)]

type Z = for<'x> Send;
//~^ WARN type alias is never used

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

use std::ops::Deref;

#[rustc_error]
fn main() { //~ ERROR compilation successful
let _x: fn(&i32) -> <&i32 as Deref>::Target = unimplemented!();
}
20 changes: 20 additions & 0 deletions src/test/compile-fail/issue-41998.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// 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)]

#[rustc_error]
fn main() { //~ ERROR compilation successful
if ('x' as char) < ('y' as char) {
print!("x");
} else {
print!("y");
}
}

0 comments on commit abba6e8

Please sign in to comment.