Auto merge of #25056 - jooert:sometests, r=alexcrichton

Add several regression tests and remove some unnecessary FIXMEs.
This commit is contained in:
bors 2015-05-04 18:59:47 +00:00
commit 9b481f89d1
23 changed files with 211 additions and 41 deletions

View file

@ -0,0 +1,16 @@
// Copyright 2015 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.
#![crate_type = "lib"]
#[macro_export]
macro_rules! mywrite {
($dst:expr, $($arg:tt)*) => ($dst.write_fmt(format_args!($($arg)*)))
}

View file

@ -0,0 +1,19 @@
// Copyright 2015 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.
trait t1 : t2 {
//~^ ERROR: unsupported cyclic reference between types/traits detected
}
trait t2 : t1 {
//~^ ERROR: unsupported cyclic reference between types/traits detected
}
fn main() { }

View file

@ -0,0 +1,31 @@
// Copyright 2015 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.
extern crate core;
use core::ops::Drop;
trait Bar {}
struct G<T: ?Sized> {
_ptr: *const T
}
impl<T> Drop for G<T> {
//~^ ERROR: The requirement `T : core::marker::Sized` is added only by the Drop impl. [E0367]
fn drop(&mut self) {
if !self._ptr.is_null() {
}
}
}
fn main() {
let x:G<Bar>;
}

View file

@ -0,0 +1,22 @@
// Copyright 2015 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.
trait Trait { }
fn function(t: &mut Trait) {
t as *mut Trait
//~^ ERROR: mismatched types:
//~| expected `()`,
//~| found `*mut Trait`
//~| (expected (),
//~| found *-ptr) [E0308]
}
fn main() { }

View file

@ -0,0 +1,21 @@
// Copyright 2015 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.
// aux-build:issue-19163.rs
#[macro_use] extern crate issue_19163;
use std::io::Write;
fn main() {
let mut v = vec![];
mywrite!(&v, "Hello world");
//~^ error: cannot borrow immutable borrowed content as mutable
}

View file

@ -0,0 +1,28 @@
// Copyright 2015 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.
trait Qiz {
fn qiz();
}
struct Foo;
impl Qiz for Foo {
fn qiz() {}
}
struct Bar {
foos: &'static [&'static (Qiz + 'static)]
}
const FOO : Foo = Foo;
const BAR : Bar = Bar { foos: &[&FOO]};
//~^ ERROR: cannot convert to a trait object because trait `Qiz` is not object-safe [E0038]
fn main() { }

View file

@ -0,0 +1,7 @@
-include ../tools.mk
# Regression test for ICE #18943 when compiling as lib
all:
$(RUSTC) foo.rs --crate-type lib
$(call REMOVE_RLIBS,foo) && exit 0 || exit 1

View file

@ -0,0 +1,16 @@
// Copyright 2015 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.
trait Foo { }
trait Bar { }
impl<'a> Foo for Bar + 'a { }

View file

@ -14,8 +14,6 @@
// for `ByRef`. The right answer was to consider the result ambiguous
// until more type information was available.
// ignore-pretty -- FIXME(#17362)
#![feature(lang_items, unboxed_closures)]
#![no_implicit_prelude]

View file

@ -14,8 +14,6 @@
// for `ByRef`. The right answer was to consider the result ambiguous
// until more type information was available.
// ignore-pretty -- FIXME(#17362) pretty prints with `<<` which lexes wrong
#![feature(lang_items, unboxed_closures)]
#![no_implicit_prelude]

View file

@ -8,9 +8,6 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// no-pretty-expanded FIXME #15189
#[derive(PartialEq, Eq, PartialOrd, Ord)]
enum ES<T> {
ES1 { x: T },

View file

@ -8,9 +8,6 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// no-pretty-expanded FIXME #15189
#[derive(PartialEq, Eq, PartialOrd, Ord)]
struct S<T> {
x: T,

View file

@ -8,9 +8,6 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// no-pretty-expanded FIXME #15189
#[derive(PartialEq, Eq, PartialOrd, Ord)]
struct TS<T>(T,T);

View file

@ -8,11 +8,9 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// ignore-test FIXME #11820: & is unreliable in deriving
use std::cmp::Ordering::{Less,Equal,Greater};
#[derive(Eq,Ord)]
#[derive(PartialEq, Eq, PartialOrd, Ord)]
struct A<'a> {
x: &'a isize
}

View file

@ -8,8 +8,6 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// ignore-pretty FIXME(#14193)
#![allow(unknown_features)]
#![feature(box_syntax)]

View file

@ -0,0 +1,15 @@
// Copyright 2015 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.
mod Foo { }
struct Foo;
impl Foo { }
fn main() { }

View file

@ -0,0 +1,20 @@
// Copyright 2015 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(simd)]
#[simd]
struct T(f64, f64, f64);
static X: T = T(0.0, 0.0, 0.0);
fn main() {
let _ = X;
}

View file

@ -8,8 +8,6 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// ignore-pretty -- FIXME(#17362) pretty prints as `Hash<<Self as Hasher...` which fails to parse
pub trait Hasher {
type State;

View file

@ -20,7 +20,6 @@ struct A { a: Box<isize> }
fn foo() -> Box<FnMut() -> isize + 'static> {
let k: Box<_> = box 22;
let _u = A {a: k.clone()};
// FIXME(#16640) suffix in `22` suffix shouldn't be necessary
let result = || 22;
// FIXME (#22405): Replace `Box::new` with `box` here when/if possible.
Box::new(result)

View file

@ -17,9 +17,6 @@ use std::default::Default;
use std::iter::FromIterator;
use std::ops::Add;
use std::option::IntoIter as OptionIter;
// FIXME the glob std::prelude::*; import of Vec is missing non-static inherent
// methods.
use std::vec::Vec;
pub struct XorShiftRng;
use XorShiftRng as DummyRng;
@ -81,11 +78,10 @@ tests! {
Vec::map_in_place, fn(Vec<u8>, fn(u8) -> i8) -> Vec<i8>, (vec![b'f', b'o', b'o'], u8_as_i8);
Vec::map_in_place::<i8, fn(u8) -> i8>, fn(Vec<u8>, fn(u8) -> i8) -> Vec<i8>,
(vec![b'f', b'o', b'o'], u8_as_i8);
// FIXME these break with "type parameter might not appear here pointing at `<u8>`.
// Vec::<u8>::map_in_place: fn(Vec<u8>, fn(u8) -> i8) -> Vec<i8>
// , (vec![b'f', b'o', b'o'], u8_as_i8);
// Vec::<u8>::map_in_place::<i8, fn(u8) -> i8>: fn(Vec<u8>, fn(u8) -> i8) -> Vec<i8>
// , (vec![b'f', b'o', b'o'], u8_as_i8);
Vec::<u8>::map_in_place, fn(Vec<u8>, fn(u8) -> i8) -> Vec<i8>
, (vec![b'f', b'o', b'o'], u8_as_i8);
Vec::<u8>::map_in_place::<i8, fn(u8) -> i8>, fn(Vec<u8>, fn(u8) -> i8) -> Vec<i8>
, (vec![b'f', b'o', b'o'], u8_as_i8);
// Trait static methods.
bool::size, fn() -> usize, ();

View file

@ -8,9 +8,6 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// no-pretty-expanded FIXME #15189
#![feature(core)]
use std::iter::Unfold;

View file

@ -7,8 +7,6 @@
// <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-pretty-expanded FIXME #15189
pub fn main() {
let yen: char = '¥'; // 0xa5

View file

@ -11,7 +11,16 @@
use std::mem::size_of;
pub fn main() {
#[cfg(not(target_pointer_width = "64"))]
fn test_big_vec() {}
#[cfg(target_pointer_width = "64")]
fn test_big_vec()
{
assert_eq!(size_of::<[u8; (1 << 32)]>(), (1 << 32));
}
fn main() {
let x: [isize; 4] = [1, 2, 3, 4];
assert_eq!(x[0], 1);
assert_eq!(x[1], 2);
@ -19,10 +28,5 @@ pub fn main() {
assert_eq!(x[3], 4);
assert_eq!(size_of::<[u8; 4]>(), 4);
// FIXME #10183
// FIXME #18069
//if cfg!(target_pointer_width = "64") {
// assert_eq!(size_of::<[u8; (1 << 32)]>(), (1 << 32));
//}
test_big_vec();
}