From 2346169f999043a1e9b46e6e5206a82c970f1c21 Mon Sep 17 00:00:00 2001 From: Mark Simulacrum Date: Sat, 17 Jun 2017 14:43:10 -0600 Subject: [PATCH] Add tests for a few issues. --- src/test/compile-fail/issue-34222-1.rs | 13 +++++++++ src/test/compile-fail/issue-34222.rs | 18 ++++++++++++ src/test/compile-fail/issue-34373.rs | 21 ++++++++++++++ src/test/compile-fail/issue-35570.rs | 40 ++++++++++++++++++++++++++ src/test/compile-fail/issue-36839.rs | 32 +++++++++++++++++++++ src/test/compile-fail/issue-37051.rs | 29 +++++++++++++++++++ src/test/compile-fail/issue-37323.rs | 28 ++++++++++++++++++ src/test/compile-fail/issue-37366.rs | 26 +++++++++++++++++ src/test/compile-fail/issue-37510.rs | 25 ++++++++++++++++ src/test/compile-fail/issue-37515.rs | 18 ++++++++++++ src/test/compile-fail/issue-38381.rs | 18 ++++++++++++ src/test/compile-fail/issue-41998.rs | 20 +++++++++++++ 12 files changed, 288 insertions(+) create mode 100644 src/test/compile-fail/issue-34222-1.rs create mode 100644 src/test/compile-fail/issue-34222.rs create mode 100644 src/test/compile-fail/issue-34373.rs create mode 100644 src/test/compile-fail/issue-35570.rs create mode 100644 src/test/compile-fail/issue-36839.rs create mode 100644 src/test/compile-fail/issue-37051.rs create mode 100644 src/test/compile-fail/issue-37323.rs create mode 100644 src/test/compile-fail/issue-37366.rs create mode 100644 src/test/compile-fail/issue-37510.rs create mode 100644 src/test/compile-fail/issue-37515.rs create mode 100644 src/test/compile-fail/issue-38381.rs create mode 100644 src/test/compile-fail/issue-41998.rs diff --git a/src/test/compile-fail/issue-34222-1.rs b/src/test/compile-fail/issue-34222-1.rs new file mode 100644 index 0000000000000..6c85414860f33 --- /dev/null +++ b/src/test/compile-fail/issue-34222-1.rs @@ -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 or the MIT license +// , 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 +} diff --git a/src/test/compile-fail/issue-34222.rs b/src/test/compile-fail/issue-34222.rs new file mode 100644 index 0000000000000..4609c0ccb1cfb --- /dev/null +++ b/src/test/compile-fail/issue-34222.rs @@ -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 or the MIT license +// , 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; +} diff --git a/src/test/compile-fail/issue-34373.rs b/src/test/compile-fail/issue-34373.rs new file mode 100644 index 0000000000000..7bbc680197e84 --- /dev/null +++ b/src/test/compile-fail/issue-34373.rs @@ -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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![allow(warnings)] + +trait Trait { + fn foo(_: T) {} +} + +pub struct Foo>>; +type DefaultFoo = Foo; //~ ERROR unsupported cyclic reference + +fn main() { +} diff --git a/src/test/compile-fail/issue-35570.rs b/src/test/compile-fail/issue-35570.rs new file mode 100644 index 0000000000000..092bf00ddd6a4 --- /dev/null +++ b/src/test/compile-fail/issue-35570.rs @@ -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 or the MIT license +// , 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 {} +trait Trait2<'a> { + type Ty; +} + +fn _ice(param: Box 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); +} diff --git a/src/test/compile-fail/issue-36839.rs b/src/test/compile-fail/issue-36839.rs new file mode 100644 index 0000000000000..3e34b25067279 --- /dev/null +++ b/src/test/compile-fail/issue-36839.rs @@ -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 or the MIT license +// , 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 Broken for T { + type Assoc = (); + fn broken(&self) where Self::Assoc: Foo { + let _x: ::Bar; + } +} + +#[rustc_error] +fn main() { //~ ERROR compilation successful + let _m: &Broken = &(); +} diff --git a/src/test/compile-fail/issue-37051.rs b/src/test/compile-fail/issue-37051.rs new file mode 100644 index 0000000000000..ab08e1899a0ee --- /dev/null +++ b/src/test/compile-fail/issue-37051.rs @@ -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 or the MIT license +// , 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; +} + +struct StateMachineEnded; + +impl State for StateMachineEnded { + fn execute(self) -> Option { + None + } +} + +#[rustc_error] +fn main() { //~ ERROR compilation successful +} diff --git a/src/test/compile-fail/issue-37323.rs b/src/test/compile-fail/issue-37323.rs new file mode 100644 index 0000000000000..98806cdd1b9af --- /dev/null +++ b/src/test/compile-fail/issue-37323.rs @@ -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 or the MIT license +// , 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() { +} diff --git a/src/test/compile-fail/issue-37366.rs b/src/test/compile-fail/issue-37366.rs new file mode 100644 index 0000000000000..2a4808fb186bb --- /dev/null +++ b/src/test/compile-fail/issue-37366.rs @@ -0,0 +1,26 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// ignore-emscripten + +#![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 +} diff --git a/src/test/compile-fail/issue-37510.rs b/src/test/compile-fail/issue-37510.rs new file mode 100644 index 0000000000000..53c91f323d081 --- /dev/null +++ b/src/test/compile-fail/issue-37510.rs @@ -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 or the MIT license +// , 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) { + + } +} diff --git a/src/test/compile-fail/issue-37515.rs b/src/test/compile-fail/issue-37515.rs new file mode 100644 index 0000000000000..fa452d6e74a05 --- /dev/null +++ b/src/test/compile-fail/issue-37515.rs @@ -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 or the MIT license +// , 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 +} diff --git a/src/test/compile-fail/issue-38381.rs b/src/test/compile-fail/issue-38381.rs new file mode 100644 index 0000000000000..6b7dde117dfd6 --- /dev/null +++ b/src/test/compile-fail/issue-38381.rs @@ -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 or the MIT license +// , 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!(); +} diff --git a/src/test/compile-fail/issue-41998.rs b/src/test/compile-fail/issue-41998.rs new file mode 100644 index 0000000000000..406aadcd2129d --- /dev/null +++ b/src/test/compile-fail/issue-41998.rs @@ -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 or the MIT license +// , 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"); + } +}