Skip to content

Commit

Permalink
Auto merge of #47014 - topecongiro:fixed-ices, r=estebank
Browse files Browse the repository at this point in the history
Add tests to fixed ICEs

Closes #27078. Closes #27985. Closes #39848. Closes #42164.
Closes #42479. Closes #45662. Closes #45965. Closes #46152.
  • Loading branch information
bors committed Dec 27, 2017
2 parents bfbb1f5 + f6f9cbe commit 1abeb43
Show file tree
Hide file tree
Showing 8 changed files with 192 additions and 0 deletions.
24 changes: 24 additions & 0 deletions src/test/compile-fail/E0532.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.

fn main() {
let value = 1;

match SomeStruct(value) {
StructConst1(_) => { },
//~^ ERROR expected tuple struct/variant, found constant `StructConst1`
_ => { },
}

struct SomeStruct(u8);

const StructConst1 : SomeStruct = SomeStruct(1);
const StructConst2 : SomeStruct = SomeStruct(2);
}
21 changes: 21 additions & 0 deletions src/test/compile-fail/issue-27078.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.

#![feature(associated_consts)]

trait Foo {
const BAR: i32;
fn foo(self) -> &'static i32 {
//~^ ERROR the trait bound `Self: std::marker::Sized` is not satisfied
&<Self>::BAR
}
}

fn main() {}
20 changes: 20 additions & 0 deletions src/test/compile-fail/issue-39848.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.

macro_rules! get_opt {
($tgt:expr, $field:ident) => {
if $tgt.has_$field() {}
}
}

fn main() {
get_opt!(bar, foo);
//~^ ERROR expected `{`, found `foo`
}
14 changes: 14 additions & 0 deletions src/test/compile-fail/issue-45965.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// 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() {
let a = |r: f64| if r != 0.0(r != 0.0) { 1.0 } else { 0.0 };
//~^ ERROR expected function, found `{float}`
}
23 changes: 23 additions & 0 deletions src/test/run-pass/align-with-extern-c-fn.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.

// #45662

#![feature(repr_align)]
#![feature(attr_literals)]

#[repr(align(16))]
pub struct A {
y: i64,
}

pub extern "C" fn foo(x: A) {}

fn main() {}
27 changes: 27 additions & 0 deletions src/test/run-pass/impl-trait/issue-42479.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(conservative_impl_trait)]

use std::iter::once;

struct Foo {
x: i32,
}

impl Foo {
fn inside(&self) -> impl Iterator<Item = &i32> {
once(&self.x)
}
}

fn main() {
println!("hi");
}
31 changes: 31 additions & 0 deletions src/test/run-pass/issue-45152.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// 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(unsize, coerce_unsized)]

#[repr(packed)]
struct UnalignedPtr<'a, T: ?Sized>
where T: 'a,
{
data: &'a T,
}

fn main() {

impl<'a, T, U> std::ops::CoerceUnsized<UnalignedPtr<'a, U>> for UnalignedPtr<'a, T>
where
T: std::marker::Unsize<U> + ?Sized,
U: ?Sized,
{ }

let arr = [1, 2, 3];
let arr_unaligned: UnalignedPtr<[i32; 3]> = UnalignedPtr { data: &arr };
let arr_unaligned: UnalignedPtr<[i32]> = arr_unaligned;
}
32 changes: 32 additions & 0 deletions src/test/run-pass/macro-nested_expr.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.

// #42164

#![feature(decl_macro)]
#![allow(dead_code)]

pub macro m($inner_str:expr) {
#[doc = $inner_str]
struct S;
}

macro_rules! define_f {
($name:expr) => {
#[export_name = $name]
fn f() {}
}
}

fn main() {
define_f!(concat!("exported_", "f"));
m!(stringify!(foo));
}

0 comments on commit 1abeb43

Please sign in to comment.