about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorSeiichi Uchida <seuchida@gmail.com>2017-12-26 18:41:56 +0900
committerSeiichi Uchida <seuchida@gmail.com>2017-12-26 19:24:48 +0900
commitf6f9cbe56011debeb4d6df9ad71139bc8a87d653 (patch)
tree4117eba4d2494e10f796dd33f4645f6217793525 /src
parent2e83f3c968a3c3e4c2e3d0150cfef7d9a97413c2 (diff)
downloadrust-f6f9cbe56011debeb4d6df9ad71139bc8a87d653.tar.gz
rust-f6f9cbe56011debeb4d6df9ad71139bc8a87d653.zip
Add tests to fixed ICEs
Closes #27078. Closes #27985. Closes #39848. Closes #42164.
Closes #42479. Closes #45152. Closes #45662. Closes #45876.
Closes #45965.
Diffstat (limited to 'src')
-rw-r--r--src/test/compile-fail/E0532.rs24
-rw-r--r--src/test/compile-fail/issue-27078.rs21
-rw-r--r--src/test/compile-fail/issue-39848.rs20
-rw-r--r--src/test/compile-fail/issue-45965.rs14
-rw-r--r--src/test/run-pass/align-with-extern-c-fn.rs23
-rw-r--r--src/test/run-pass/impl-trait/issue-42479.rs27
-rw-r--r--src/test/run-pass/issue-45152.rs31
-rw-r--r--src/test/run-pass/macro-nested_expr.rs32
8 files changed, 192 insertions, 0 deletions
diff --git a/src/test/compile-fail/E0532.rs b/src/test/compile-fail/E0532.rs
new file mode 100644
index 00000000000..5dc3b5f94f3
--- /dev/null
+++ b/src/test/compile-fail/E0532.rs
@@ -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);
+}
diff --git a/src/test/compile-fail/issue-27078.rs b/src/test/compile-fail/issue-27078.rs
new file mode 100644
index 00000000000..f34bef62249
--- /dev/null
+++ b/src/test/compile-fail/issue-27078.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 <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() {}
diff --git a/src/test/compile-fail/issue-39848.rs b/src/test/compile-fail/issue-39848.rs
new file mode 100644
index 00000000000..d5ca009d310
--- /dev/null
+++ b/src/test/compile-fail/issue-39848.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 <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`
+}
diff --git a/src/test/compile-fail/issue-45965.rs b/src/test/compile-fail/issue-45965.rs
new file mode 100644
index 00000000000..0b82f2b32ff
--- /dev/null
+++ b/src/test/compile-fail/issue-45965.rs
@@ -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}`
+}
diff --git a/src/test/run-pass/align-with-extern-c-fn.rs b/src/test/run-pass/align-with-extern-c-fn.rs
new file mode 100644
index 00000000000..db25960df4c
--- /dev/null
+++ b/src/test/run-pass/align-with-extern-c-fn.rs
@@ -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() {}
diff --git a/src/test/run-pass/impl-trait/issue-42479.rs b/src/test/run-pass/impl-trait/issue-42479.rs
new file mode 100644
index 00000000000..629948a5dc4
--- /dev/null
+++ b/src/test/run-pass/impl-trait/issue-42479.rs
@@ -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");
+}
diff --git a/src/test/run-pass/issue-45152.rs b/src/test/run-pass/issue-45152.rs
new file mode 100644
index 00000000000..a5c349adb8d
--- /dev/null
+++ b/src/test/run-pass/issue-45152.rs
@@ -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;
+}
diff --git a/src/test/run-pass/macro-nested_expr.rs b/src/test/run-pass/macro-nested_expr.rs
new file mode 100644
index 00000000000..993ded60c36
--- /dev/null
+++ b/src/test/run-pass/macro-nested_expr.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 <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));
+}
+