From 783c6a1fbf9c44bc58e3ba9224d5920db1de91f0 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 12 Aug 2013 20:18:47 -0700 Subject: [PATCH] Add a bunch of tests for closed issues Closes #3907 Closes #5493 Closes #4464 Closes #4759 Closes #5666 Closes #5884 Closes #5926 Closes #6318 Closes #6557 Closes #6898 Closes #6919 Closes #7222 --- src/test/auxiliary/iss.rs | 23 +++++++++++++++++ src/test/auxiliary/issue_3907.rs | 14 ++++++++++ src/test/compile-fail/issue-3907.rs | 30 ++++++++++++++++++++++ src/test/compile-fail/issue-5439.rs | 29 +++++++++++++++++++++ src/test/run-pass/issue-4464.rs | 13 ++++++++++ src/test/run-pass/issue-4759-1.rs | 13 ++++++++++ src/test/run-pass/issue-4759.rs | 25 ++++++++++++++++++ src/test/run-pass/issue-5666.rs | 35 +++++++++++++++++++++++++ src/test/run-pass/issue-5884.rs | 24 +++++++++++++++++ src/test/run-pass/issue-5926.rs | 17 ++++++++++++ src/test/run-pass/issue-6318.rs | 26 +++++++++++++++++++ src/test/run-pass/issue-6557.rs | 13 ++++++++++ src/test/run-pass/issue-6898.rs | 40 +++++++++++++++++++++++++++++ src/test/run-pass/issue-6919.rs | 19 ++++++++++++++ src/test/run-pass/issue-7222.rs | 19 ++++++++++++++ 15 files changed, 340 insertions(+) create mode 100644 src/test/auxiliary/iss.rs create mode 100644 src/test/auxiliary/issue_3907.rs create mode 100644 src/test/compile-fail/issue-3907.rs create mode 100644 src/test/compile-fail/issue-5439.rs create mode 100644 src/test/run-pass/issue-4464.rs create mode 100644 src/test/run-pass/issue-4759-1.rs create mode 100644 src/test/run-pass/issue-4759.rs create mode 100644 src/test/run-pass/issue-5666.rs create mode 100644 src/test/run-pass/issue-5884.rs create mode 100644 src/test/run-pass/issue-5926.rs create mode 100644 src/test/run-pass/issue-6318.rs create mode 100644 src/test/run-pass/issue-6557.rs create mode 100644 src/test/run-pass/issue-6898.rs create mode 100644 src/test/run-pass/issue-6919.rs create mode 100644 src/test/run-pass/issue-7222.rs diff --git a/src/test/auxiliary/iss.rs b/src/test/auxiliary/iss.rs new file mode 100644 index 00000000000..74c55350743 --- /dev/null +++ b/src/test/auxiliary/iss.rs @@ -0,0 +1,23 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#[link(name="iss6919_3", vers="0.1")]; + +// part of issue-6919.rs + +struct C<'self> { + pub k: &'self fn(), +} + +fn no_op() { } +pub static D : C<'static> = C { + k: no_op +}; + diff --git a/src/test/auxiliary/issue_3907.rs b/src/test/auxiliary/issue_3907.rs new file mode 100644 index 00000000000..2e254e5431d --- /dev/null +++ b/src/test/auxiliary/issue_3907.rs @@ -0,0 +1,14 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +pub trait Foo { + fn bar(); +} + diff --git a/src/test/compile-fail/issue-3907.rs b/src/test/compile-fail/issue-3907.rs new file mode 100644 index 00000000000..df18a5ad2d3 --- /dev/null +++ b/src/test/compile-fail/issue-3907.rs @@ -0,0 +1,30 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// aux-build:issue_3907.rs +extern mod issue_3907; + +type Foo = issue_3907::Foo; //~ ERROR: reference to trait + +struct S { + name: int +} + +impl Foo for S { //~ ERROR: Foo is not a trait + fn bar() { } +} + +fn main() { + let s = S { + name: 0 + }; + s.bar(); +} + diff --git a/src/test/compile-fail/issue-5439.rs b/src/test/compile-fail/issue-5439.rs new file mode 100644 index 00000000000..8bd9bb32631 --- /dev/null +++ b/src/test/compile-fail/issue-5439.rs @@ -0,0 +1,29 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +struct Foo { + foo: int, +} + +struct Bar { + bar: int, +} + +impl Bar { + fn make_foo (&self, i: int) -> ~Foo { + return ~Foo { nonexistent: self, foo: i }; //~ ERROR: no field named + } +} + +fn main () { + let bar = Bar { bar: 1 }; + let foo = bar.make_foo(2); + println(fmt!("%d", foo.foo)); +} diff --git a/src/test/run-pass/issue-4464.rs b/src/test/run-pass/issue-4464.rs new file mode 100644 index 00000000000..529f8ecc6eb --- /dev/null +++ b/src/test/run-pass/issue-4464.rs @@ -0,0 +1,13 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +fn broken<'r>(v: &'r [u8], i: uint, j: uint) -> &'r [u8] { v.slice(i, j) } + +pub fn main() {} diff --git a/src/test/run-pass/issue-4759-1.rs b/src/test/run-pass/issue-4759-1.rs new file mode 100644 index 00000000000..ad8ee984217 --- /dev/null +++ b/src/test/run-pass/issue-4759-1.rs @@ -0,0 +1,13 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +trait U { fn f(self); } +impl U for int { fn f(self) {} } +pub fn main() { 4.f(); } diff --git a/src/test/run-pass/issue-4759.rs b/src/test/run-pass/issue-4759.rs new file mode 100644 index 00000000000..45912039857 --- /dev/null +++ b/src/test/run-pass/issue-4759.rs @@ -0,0 +1,25 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +struct T { a: ~int } + +trait U { + fn f(self); +} + +impl U for ~int { + fn f(self) { } +} + +pub fn main() { + let T { a: a } = T { a: ~0 }; + a.f(); +} + diff --git a/src/test/run-pass/issue-5666.rs b/src/test/run-pass/issue-5666.rs new file mode 100644 index 00000000000..1be5d079132 --- /dev/null +++ b/src/test/run-pass/issue-5666.rs @@ -0,0 +1,35 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +struct Dog { + name : ~str +} + +trait Barks { + fn bark(&self) -> ~str; +} + +impl Barks for Dog { + fn bark(&self) -> ~str { + return fmt!("woof! (I'm %s)", self.name); + } +} + + +pub fn main() { + let snoopy = ~Dog{name: ~"snoopy"}; + let bubbles = ~Dog{name: ~"bubbles"}; + let barker = [snoopy as ~Barks, bubbles as ~Barks]; + + for pup in barker.iter() { + println(fmt!("%s", pup.bark())); + } +} + diff --git a/src/test/run-pass/issue-5884.rs b/src/test/run-pass/issue-5884.rs new file mode 100644 index 00000000000..ea0e40be866 --- /dev/null +++ b/src/test/run-pass/issue-5884.rs @@ -0,0 +1,24 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +pub struct Foo { + a: int, +} + +struct Bar<'self> { + a: ~Option, + b: &'self Foo, +} + +fn check(a: @Foo) { + let mut _ic = Bar{ b: a, a: ~None }; +} + +pub fn main(){} diff --git a/src/test/run-pass/issue-5926.rs b/src/test/run-pass/issue-5926.rs new file mode 100644 index 00000000000..7557df27f49 --- /dev/null +++ b/src/test/run-pass/issue-5926.rs @@ -0,0 +1,17 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +pub fn main() { + let mut your_favorite_numbers = @[1,2,3]; + let mut my_favorite_numbers = @[4,5,6]; + let f = your_favorite_numbers + my_favorite_numbers; + println(fmt!("The third favorite number is %?.", f)) +} + diff --git a/src/test/run-pass/issue-6318.rs b/src/test/run-pass/issue-6318.rs new file mode 100644 index 00000000000..bf586eed700 --- /dev/null +++ b/src/test/run-pass/issue-6318.rs @@ -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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +pub enum Thing { + A(~Foo) +} + +pub trait Foo {} + +pub struct Struct; + +impl Foo for Struct {} + +pub fn main() { + match A(~Struct as ~Foo) { + A(a) => 0, + }; +} + diff --git a/src/test/run-pass/issue-6557.rs b/src/test/run-pass/issue-6557.rs new file mode 100644 index 00000000000..1ba50536978 --- /dev/null +++ b/src/test/run-pass/issue-6557.rs @@ -0,0 +1,13 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +fn foo(~(x, y): ~(int, int)) {} + +pub fn main() {} diff --git a/src/test/run-pass/issue-6898.rs b/src/test/run-pass/issue-6898.rs new file mode 100644 index 00000000000..38f205bd7ff --- /dev/null +++ b/src/test/run-pass/issue-6898.rs @@ -0,0 +1,40 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +use std::unstable::intrinsics; + +/// Returns the size of a type +pub fn size_of() -> uint { + TypeInfo::size_of::() +} + +/// Returns the size of the type that `val` points to +pub fn size_of_val(val: &T) -> uint { + val.size_of_val() +} + +pub trait TypeInfo { + pub fn size_of() -> uint; + pub fn size_of_val(&self) -> uint; +} + +impl TypeInfo for T { + /// The size of the type in bytes. + pub fn size_of() -> uint { + unsafe { intrinsics::size_of::() } + } + + /// Returns the size of the type of `self` in bytes. + pub fn size_of_val(&self) -> uint { + TypeInfo::size_of::() + } +} + +pub fn main() {} diff --git a/src/test/run-pass/issue-6919.rs b/src/test/run-pass/issue-6919.rs new file mode 100644 index 00000000000..f63811fa82b --- /dev/null +++ b/src/test/run-pass/issue-6919.rs @@ -0,0 +1,19 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// aux-build:iss.rs +// xfail-fast + +extern mod iss ( name = "iss6919_3" ); + +pub fn main() { + iss::D.k; +} + diff --git a/src/test/run-pass/issue-7222.rs b/src/test/run-pass/issue-7222.rs new file mode 100644 index 00000000000..98c0064d0ec --- /dev/null +++ b/src/test/run-pass/issue-7222.rs @@ -0,0 +1,19 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +pub fn main() { + static FOO: float = 10.0; + + match 0.0 { + 0.0 .. FOO => (), + _ => () + } +} +