mirror of
https://github.com/rust-lang/rust.git
synced 2025-01-07 05:15:02 +00:00
auto merge of #8932 : huonw/rust/closed-issues, r=thestinger
This commit is contained in:
commit
7048e05d5f
@ -8,12 +8,10 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test
|
||||
// error-pattern: instantiating a type parameter with an incompatible type
|
||||
extern mod extra;
|
||||
use extra::arc::rw_arc;
|
||||
use extra::arc::RWArc;
|
||||
|
||||
fn main() {
|
||||
let arc1 = ~rw_arc(true);
|
||||
let _arc2 = ~rw_arc(arc1);
|
||||
let arc1 = RWArc::new(true);
|
||||
let _arc2 = RWArc::new(arc1); //~ ERROR instantiating a type parameter with an incompatible type
|
||||
}
|
||||
|
@ -1,29 +0,0 @@
|
||||
// Copyright 2012 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.
|
||||
|
||||
// xfail-test
|
||||
|
||||
struct X { x: (), }
|
||||
|
||||
impl Drop for X {
|
||||
fn drop(&self) {
|
||||
error!("destructor runs");
|
||||
}
|
||||
}
|
||||
|
||||
struct Y { y: Option<X> }
|
||||
|
||||
fn main() {
|
||||
let x = Y { y: Some(X { x: () }) };
|
||||
match x.y {
|
||||
Some(_z) => { }, //~ ERROR cannot bind by-move when matching an lvalue
|
||||
None => fail!()
|
||||
}
|
||||
}
|
@ -1,4 +1,3 @@
|
||||
// xfail-test #3024
|
||||
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
@ -20,7 +19,7 @@ impl Drop for X {
|
||||
}
|
||||
|
||||
fn unwrap(x: X) -> ~str {
|
||||
let X { x: y } = x; //~ ERROR cannot bind by-move within struct
|
||||
let X { x: y } = x; //~ ERROR cannot move out of type
|
||||
y
|
||||
}
|
||||
|
||||
|
@ -8,20 +8,19 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test
|
||||
// issue 7327
|
||||
|
||||
struct X { x: (), }
|
||||
// xfail-fast #7103
|
||||
extern mod extra;
|
||||
use extra::arc::*;
|
||||
|
||||
impl Drop for X {
|
||||
fn drop(&self) {
|
||||
error!("destructor runs");
|
||||
}
|
||||
struct A { y: Arc<int>, x: Arc<int> }
|
||||
|
||||
impl Drop for A {
|
||||
fn drop(&self) { println(fmt!("x=%?", self.x.get())); }
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let x = Some(X { x: () });
|
||||
match x {
|
||||
Some(_z) => { }, //~ ERROR cannot bind by-move when matching an lvalue
|
||||
None => fail!()
|
||||
}
|
||||
let a = A { y: Arc::new(1), x: Arc::new(2) };
|
||||
let _b = A { y: Arc::new(3), ..a };
|
||||
let _c = a; //~ ERROR use of moved value
|
||||
}
|
@ -8,10 +8,9 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test
|
||||
fn foo<T, U>(x: T, y: U) {
|
||||
let mut xx = x;
|
||||
xx = y; // error message should mention T and U, not 'a and 'b
|
||||
xx = y; //~ ERROR expected `T` but found `U`
|
||||
}
|
||||
|
||||
fn main() {
|
||||
|
@ -8,12 +8,11 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test
|
||||
struct x(());
|
||||
impl x {
|
||||
pub unsafe fn with() { } // This should fail
|
||||
pub unsafe fn with(&self) { }
|
||||
}
|
||||
|
||||
fn main() {
|
||||
x(()).with();
|
||||
x(()).with(); //~ ERROR requires unsafe function or block
|
||||
}
|
||||
|
@ -9,6 +9,8 @@
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test
|
||||
use std::io;
|
||||
|
||||
struct Point {
|
||||
x: float,
|
||||
y: float,
|
||||
|
@ -8,5 +8,4 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test
|
||||
fn main() { fmt!("%?", None); } //~ ERROR can't resolve type variable
|
||||
fn main() { fmt!("%?", None); } //~ ERROR unconstrained type
|
||||
|
@ -1,7 +1,5 @@
|
||||
//xfail-test
|
||||
|
||||
// Trying to create a fixed-length vector with a negative size
|
||||
|
||||
fn main() {
|
||||
let _x = [0,..-1];
|
||||
let _x = [0,..-1]; //~ ERROR found negative integer
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ extern mod extra;
|
||||
fn f() {
|
||||
}
|
||||
|
||||
use extra::net; //~ ERROR view items must be declared at the top
|
||||
use extra::net; //~ ERROR `use` and `extern mod` declarations must precede items
|
||||
|
||||
fn main() {
|
||||
}
|
||||
|
@ -1,4 +1,3 @@
|
||||
// xfail-test #5321
|
||||
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
|
@ -1,5 +1,3 @@
|
||||
// xfail-test #5530
|
||||
|
||||
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
@ -18,18 +16,18 @@ enum ES<T> {
|
||||
|
||||
|
||||
pub fn main() {
|
||||
let es11 = ES1 {x: 1}, es12 = ES1 {x: 2}, es21 = ES2 {x: 1, y: 1}, es22 = ES2 {x: 1, y: 2};
|
||||
let (es11, es12, es21, es22) = (ES1 {x: 1}, ES1 {x: 2}, ES2 {x: 1, y: 1}, ES2 {x: 1, y: 2});
|
||||
|
||||
// in order for both Ord and TotalOrd
|
||||
let ess = [es11, es12, es21, es22];
|
||||
|
||||
for ess.eachi |i, es1| {
|
||||
for ess.eachi |j, es2| {
|
||||
for (i, es1) in ess.iter().enumerate() {
|
||||
for (j, es2) in ess.iter().enumerate() {
|
||||
let ord = i.cmp(&j);
|
||||
|
||||
let eq = i == j;
|
||||
let lt = i < j, le = i <= j;
|
||||
let gt = i > j, ge = i >= j;
|
||||
let (lt, le) = (i < j, i <= j);
|
||||
let (gt, ge) = (i > j, i >= j);
|
||||
|
||||
// Eq
|
||||
assert_eq!(*es1 == *es2, eq);
|
||||
@ -49,4 +47,4 @@ pub fn main() {
|
||||
assert_eq!(es1.cmp(es2), ord);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -8,7 +8,6 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test
|
||||
pub fn main() {
|
||||
let x : @str = @"hello";
|
||||
let _x : @str = @"hello";
|
||||
}
|
||||
|
@ -8,11 +8,11 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test #5744 fails on 32 bit
|
||||
|
||||
// Test a foreign function that accepts and returns a struct
|
||||
// by value.
|
||||
|
||||
// xfail-test #5744
|
||||
|
||||
#[deriving(Eq)]
|
||||
struct TwoU16s {
|
||||
one: u16, two: u16
|
||||
@ -22,6 +22,7 @@ extern {
|
||||
pub fn rust_dbg_extern_identity_TwoU16s(v: TwoU16s) -> TwoU16s;
|
||||
}
|
||||
|
||||
#[fixed_stack_segment] #[inline(never)]
|
||||
pub fn main() {
|
||||
unsafe {
|
||||
let x = TwoU16s {one: 22, two: 23};
|
||||
|
@ -8,11 +8,11 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test #5744 fails on 32 bit
|
||||
|
||||
// Test a foreign function that accepts and returns a struct
|
||||
// by value.
|
||||
|
||||
// xfail-test #5744
|
||||
|
||||
#[deriving(Eq)]
|
||||
struct TwoU8s {
|
||||
one: u8, two: u8
|
||||
@ -22,6 +22,7 @@ extern {
|
||||
pub fn rust_dbg_extern_identity_TwoU8s(v: TwoU8s) -> TwoU8s;
|
||||
}
|
||||
|
||||
#[fixed_stack_segment] #[inline(never)]
|
||||
pub fn main() {
|
||||
unsafe {
|
||||
let x = TwoU8s {one: 22, two: 23};
|
||||
|
@ -8,5 +8,6 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test
|
||||
pub fn main() { let early_error: @fn(str) -> ! = {|msg| fail!() }; }
|
||||
pub fn main() {
|
||||
let early_error: @fn(&str) -> ! = |_msg| { fail!() };
|
||||
}
|
||||
|
@ -8,7 +8,6 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test
|
||||
trait T {
|
||||
fn print(&self);
|
||||
}
|
||||
|
@ -8,11 +8,10 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test FIXME #3874
|
||||
enum PureCounter { PureCounter(uint) }
|
||||
|
||||
fn each(self: PureCounter, blk: &fn(v: &uint)) {
|
||||
let PureCounter(ref x) = self;
|
||||
fn each(thing: PureCounter, blk: &fn(v: &uint)) {
|
||||
let PureCounter(ref x) = thing;
|
||||
blk(x);
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,6 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test
|
||||
pub fn main() {
|
||||
enum State { BadChar, BadSyntax }
|
||||
|
||||
|
@ -8,13 +8,12 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test
|
||||
struct HasNested {
|
||||
mut nest: ~[~[int]],
|
||||
nest: ~[~[int]],
|
||||
}
|
||||
|
||||
impl HasNested {
|
||||
fn method_push_local(&self) {
|
||||
fn method_push_local(&mut self) {
|
||||
self.nest[0].push(0);
|
||||
}
|
||||
}
|
32
src/test/run-pass/issue-4025.rs
Normal file
32
src/test/run-pass/issue-4025.rs
Normal file
@ -0,0 +1,32 @@
|
||||
// Copyright 2013 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.
|
||||
|
||||
/*
|
||||
# if b { x } else { y } requires identical types for x and y
|
||||
*/
|
||||
|
||||
fn print1(b: bool, s1: &str, s2: &str) {
|
||||
println(if b { s1 } else { s2 });
|
||||
}
|
||||
fn print2<'a, 'b>(b: bool, s1: &'a str, s2: &'b str) {
|
||||
println(if b { s1 } else { s2 });
|
||||
}
|
||||
fn print3(b: bool, s1: &str, s2: &str) {
|
||||
let mut s: &str;
|
||||
if b { s = s1; } else { s = s2; }
|
||||
println(s);
|
||||
}
|
||||
fn print4<'a, 'b>(b: bool, s1: &'a str, s2: &'b str) {
|
||||
let mut s: &str;
|
||||
if b { s = s1; } else { s = s2; }
|
||||
println(s);
|
||||
}
|
||||
|
||||
pub fn main() {}
|
@ -8,8 +8,6 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test
|
||||
|
||||
type FontTableTag = u32;
|
||||
|
||||
trait FontTableTagConversions {
|
||||
|
@ -8,7 +8,6 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test
|
||||
struct A(bool);
|
||||
|
||||
fn main() {
|
||||
|
26
src/test/run-pass/issue-5688.rs
Normal file
26
src/test/run-pass/issue-5688.rs
Normal file
@ -0,0 +1,26 @@
|
||||
// Copyright 2013 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.
|
||||
|
||||
/*
|
||||
# Corrupted initialization in the static struct
|
||||
|
||||
...should print &[1, 2, 3] but instead prints something like
|
||||
&[4492532864, 24]. It is pretty evident that the compiler messed up
|
||||
with the representation of [int, ..n] and [int] somehow, or at least
|
||||
failed to typecheck correctly.
|
||||
*/
|
||||
|
||||
struct X { vec: &'static [int] }
|
||||
static V: &'static [X] = &[X { vec: &[1, 2, 3] }];
|
||||
fn main() {
|
||||
for &v in V.iter() {
|
||||
println(fmt!("%?", v.vec));
|
||||
}
|
||||
}
|
60
src/test/run-pass/issue-5708.rs
Normal file
60
src/test/run-pass/issue-5708.rs
Normal file
@ -0,0 +1,60 @@
|
||||
// Copyright 2013 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.
|
||||
|
||||
/*
|
||||
# ICE when returning struct with borrowed pointer to trait
|
||||
|
||||
A function which takes a borrowed pointer to a trait and returns a
|
||||
struct with that borrowed pointer results in an ICE.
|
||||
|
||||
This does not occur with concrete types, only with borrowed pointers
|
||||
to traits.
|
||||
*/
|
||||
|
||||
// original
|
||||
trait Inner {
|
||||
fn print(&self);
|
||||
}
|
||||
|
||||
impl Inner for int {
|
||||
fn print(&self) { print(fmt!("Inner: %d\n", *self)); }
|
||||
}
|
||||
|
||||
struct Outer<'self> {
|
||||
inner: &'self Inner
|
||||
}
|
||||
|
||||
impl<'self> Outer<'self> {
|
||||
fn new<'r>(inner: &'r Inner) -> Outer<'r> {
|
||||
Outer {
|
||||
inner: inner
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let inner = 5;
|
||||
let outer = Outer::new(&inner as &Inner);
|
||||
outer.inner.print();
|
||||
}
|
||||
|
||||
|
||||
// minimal
|
||||
trait MyTrait<T> { }
|
||||
|
||||
pub struct MyContainer<'self, T> {
|
||||
foos: ~[&'self MyTrait<T>],
|
||||
}
|
||||
|
||||
impl<'self, T> MyContainer<'self, T> {
|
||||
pub fn add (&mut self, foo: &'self MyTrait<T>) {
|
||||
self.foos.push(foo);
|
||||
}
|
||||
}
|
@ -8,8 +8,6 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test
|
||||
|
||||
use std::hashmap::HashMap;
|
||||
|
||||
trait Graph<Node, Edge> {
|
||||
|
@ -1,4 +1,3 @@
|
||||
// xfail-test #3874
|
||||
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
|
@ -1,5 +1,3 @@
|
||||
// xfail-test
|
||||
|
||||
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
@ -14,7 +12,7 @@ use std::unstable::intrinsics;
|
||||
|
||||
/// Returns the size of a type
|
||||
pub fn size_of<T>() -> uint {
|
||||
TypeInfo::size_of::<T>()
|
||||
TypeInfo::size_of(None::<T>)
|
||||
}
|
||||
|
||||
/// Returns the size of the type that `val` points to
|
||||
@ -23,19 +21,19 @@ pub fn size_of_val<T>(val: &T) -> uint {
|
||||
}
|
||||
|
||||
pub trait TypeInfo {
|
||||
fn size_of() -> uint;
|
||||
fn size_of(_lame_type_hint: Option<Self>) -> uint;
|
||||
fn size_of_val(&self) -> uint;
|
||||
}
|
||||
|
||||
impl<T> TypeInfo for T {
|
||||
/// The size of the type in bytes.
|
||||
fn size_of() -> uint {
|
||||
fn size_of(_lame_type_hint: Option<T>) -> uint {
|
||||
unsafe { intrinsics::size_of::<T>() }
|
||||
}
|
||||
|
||||
/// Returns the size of the type of `self` in bytes.
|
||||
fn size_of_val(&self) -> uint {
|
||||
TypeInfo::size_of::<T>()
|
||||
TypeInfo::size_of(None::<T>)
|
||||
}
|
||||
}
|
||||
|
||||
|
27
src/test/run-pass/issue-7012.rs
Normal file
27
src/test/run-pass/issue-7012.rs
Normal file
@ -0,0 +1,27 @@
|
||||
// Copyright 2013 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.
|
||||
|
||||
/*
|
||||
# Comparison of static arrays
|
||||
|
||||
The expected behaviour would be that test==test1, therefore 'true'
|
||||
would be printed, however the below prints false.
|
||||
*/
|
||||
|
||||
struct signature<'self> { pattern : &'self [u32] }
|
||||
|
||||
static test1: signature<'static> = signature {
|
||||
pattern: &[0x243f6a88u32,0x85a308d3u32,0x13198a2eu32,0x03707344u32,0xa4093822u32,0x299f31d0u32]
|
||||
};
|
||||
|
||||
fn main() {
|
||||
let test = &[0x243f6a88u32,0x85a308d3u32,0x13198a2eu32,0x03707344u32,0xa4093822u32,0x299f31d0u32];
|
||||
println(fmt!("%b",test==test1.pattern));
|
||||
}
|
@ -8,8 +8,6 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test
|
||||
|
||||
fn foo(x: &[int]) -> int {
|
||||
x[0]
|
||||
}
|
||||
|
@ -8,7 +8,8 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test
|
||||
// xfail-test #7340 fails on 32-bit linux
|
||||
use std::ptr;
|
||||
|
||||
enum a_tag<A> {
|
||||
a_tag(A)
|
||||
|
@ -8,8 +8,7 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test
|
||||
|
||||
// xfail-test #7340 fails on 32-bit linux
|
||||
use std::ptr;
|
||||
|
||||
enum a_tag<A,B> {
|
||||
|
@ -8,8 +8,7 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test
|
||||
|
||||
// xfail-test #7340 fails on 32-bit linux
|
||||
use std::ptr;
|
||||
|
||||
enum a_tag {
|
||||
|
@ -1,6 +1,3 @@
|
||||
// xfail-test FIXME #5882
|
||||
// Weird borrow check bug
|
||||
|
||||
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
|
@ -8,8 +8,6 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test
|
||||
|
||||
struct Foo(int, int, int);
|
||||
|
||||
pub fn main() {
|
||||
|
Loading…
Reference in New Issue
Block a user