From 35f295d2a9c9df56c10200b26df79b421ec5fcbf Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Sun, 27 Apr 2014 20:27:20 -0700 Subject: [PATCH] test: Add tests for closed issues Closes #5518 Closes #7320 Closes #8391 Closes #8827 Closes #8983 Closes #10683 Closes #10802 Closes #11515 --- src/test/auxiliary/issue-5518.rs | 14 +++++++ src/test/compile-fail/issue-11515.rs | 18 +++++++++ src/test/run-pass/issue-10683.rs | 20 ++++++++++ src/test/run-pass/issue-10802.rs | 37 ++++++++++++++++++ src/test/run-pass/issue-5518.rs | 15 +++++++ src/test/run-pass/issue-7320.rs | 17 ++++++++ src/test/run-pass/issue-8391.rs | 16 ++++++++ src/test/run-pass/issue-8827.rs | 58 ++++++++++++++++++++++++++++ src/test/run-pass/issue-8983.rs | 19 +++++++++ 9 files changed, 214 insertions(+) create mode 100644 src/test/auxiliary/issue-5518.rs create mode 100644 src/test/compile-fail/issue-11515.rs create mode 100644 src/test/run-pass/issue-10683.rs create mode 100644 src/test/run-pass/issue-10802.rs create mode 100644 src/test/run-pass/issue-5518.rs create mode 100644 src/test/run-pass/issue-7320.rs create mode 100644 src/test/run-pass/issue-8391.rs create mode 100644 src/test/run-pass/issue-8827.rs create mode 100644 src/test/run-pass/issue-8983.rs diff --git a/src/test/auxiliary/issue-5518.rs b/src/test/auxiliary/issue-5518.rs new file mode 100644 index 0000000000000..cea227e050f83 --- /dev/null +++ b/src/test/auxiliary/issue-5518.rs @@ -0,0 +1,14 @@ +// Copyright 2012-2014 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 A<'a, T> { + fn f(&mut self) -> &'a mut T; + fn p() -> T; +} diff --git a/src/test/compile-fail/issue-11515.rs b/src/test/compile-fail/issue-11515.rs new file mode 100644 index 0000000000000..52288a9ce020a --- /dev/null +++ b/src/test/compile-fail/issue-11515.rs @@ -0,0 +1,18 @@ +// Copyright 2014 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 Test<'s> { + func: ||: 's, +} + +fn main() { + let test = ~Test { func: proc() {} }; + //~^ ERROR: expected `||` but found `proc()` +} diff --git a/src/test/run-pass/issue-10683.rs b/src/test/run-pass/issue-10683.rs new file mode 100644 index 0000000000000..934adc07e2f15 --- /dev/null +++ b/src/test/run-pass/issue-10683.rs @@ -0,0 +1,20 @@ +// Copyright 2014 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::ascii::StrAsciiExt; + +static NAME: &'static str = "hello world"; + +fn main() { + match NAME.to_ascii_lower().as_slice() { + "foo" => {} + _ => {} + } +} diff --git a/src/test/run-pass/issue-10802.rs b/src/test/run-pass/issue-10802.rs new file mode 100644 index 0000000000000..b7b65c9de0a6c --- /dev/null +++ b/src/test/run-pass/issue-10802.rs @@ -0,0 +1,37 @@ +// Copyright 2014 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 DroppableStruct; + +static mut DROPPED: bool = false; + +impl Drop for DroppableStruct { + fn drop(&mut self) { + unsafe { DROPPED = true; } + } +} + +trait MyTrait { } +impl MyTrait for ~DroppableStruct {} + +struct Whatever { w: ~MyTrait } +impl Whatever { + fn new(w: ~MyTrait) -> Whatever { + Whatever { w: w } + } +} + +fn main() { + { + let f = ~DroppableStruct; + let _a = Whatever::new(~f as ~MyTrait); + } + assert!(unsafe { DROPPED }); +} diff --git a/src/test/run-pass/issue-5518.rs b/src/test/run-pass/issue-5518.rs new file mode 100644 index 0000000000000..bc24870e5df76 --- /dev/null +++ b/src/test/run-pass/issue-5518.rs @@ -0,0 +1,15 @@ +// Copyright 2012-2014 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-5518.rs + +extern crate other = "issue-5518"; + +fn main() {} diff --git a/src/test/run-pass/issue-7320.rs b/src/test/run-pass/issue-7320.rs new file mode 100644 index 0000000000000..ccd2e8077399f --- /dev/null +++ b/src/test/run-pass/issue-7320.rs @@ -0,0 +1,17 @@ +// Copyright 2014 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 Foo { + fn foo(~self) { bar(self as ~Foo); } +} + +fn bar(_b: ~Foo) { } + +fn main() {} diff --git a/src/test/run-pass/issue-8391.rs b/src/test/run-pass/issue-8391.rs new file mode 100644 index 0000000000000..fdd27f8542fc7 --- /dev/null +++ b/src/test/run-pass/issue-8391.rs @@ -0,0 +1,16 @@ +// Copyright 2014 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 main() { + let _x = match Some(1) { + _y @ Some(_) => 1, + None => 2, + }; +} diff --git a/src/test/run-pass/issue-8827.rs b/src/test/run-pass/issue-8827.rs new file mode 100644 index 0000000000000..73e4a2716b829 --- /dev/null +++ b/src/test/run-pass/issue-8827.rs @@ -0,0 +1,58 @@ +// Copyright 2014 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 periodical(n: int) -> Receiver { + let (chan, port) = channel(); + spawn(proc() { + loop { + for _ in range(1, n) { + match chan.send_opt(false) { + Ok(()) => {} + Err(..) => break, + } + } + match chan.send_opt(true) { + Ok(()) => {} + Err(..) => break + } + } + }); + return port; +} + +fn integers() -> Receiver { + let (chan, port) = channel(); + spawn(proc() { + let mut i = 1; + loop { + match chan.send_opt(i) { + Ok(()) => {} + Err(..) => break, + } + i = i + 1; + } + }); + return port; +} + +fn main() { + let ints = integers(); + let threes = periodical(3); + let fives = periodical(5); + for _ in range(1, 100) { + match (ints.recv(), threes.recv(), fives.recv()) { + (_, true, true) => println!("FizzBuzz"), + (_, true, false) => println!("Fizz"), + (_, false, true) => println!("Buzz"), + (i, false, false) => println!("{}", i) + } + } +} + diff --git a/src/test/run-pass/issue-8983.rs b/src/test/run-pass/issue-8983.rs new file mode 100644 index 0000000000000..6efec00e7efd0 --- /dev/null +++ b/src/test/run-pass/issue-8983.rs @@ -0,0 +1,19 @@ +// Copyright 2014 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. + +#![feature(managed_boxes)] + +fn main() { + fn f(_: proc()) {} + fn eat(_: T) {} + + let x = @1; + f(proc() { eat(x) }); +}