diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs index a137f6e78b8b6..8b3ae3028e3fd 100644 --- a/src/libsyntax/ext/base.rs +++ b/src/libsyntax/ext/base.rs @@ -557,7 +557,7 @@ impl<'a> ExtCtxt<'a> { self.recursion_count += 1; if self.recursion_count > self.ecfg.recursion_limit { self.span_fatal(ei.call_site, - format!("Recursion limit reached while expanding the macro `{}`", + format!("recursion limit reached while expanding the macro `{}`", ei.callee.name).as_slice()); } diff --git a/src/test/compile-fail/infinite-macro-expansion.rs b/src/test/compile-fail/infinite-macro-expansion.rs index 3ea5671735d04..67a7cdf102481 100644 --- a/src/test/compile-fail/infinite-macro-expansion.rs +++ b/src/test/compile-fail/infinite-macro-expansion.rs @@ -12,7 +12,7 @@ macro_rules! recursive( () => ( - recursive!() //~ ERROR Recursion limit reached while expanding the macro `recursive` + recursive!() //~ ERROR recursion limit reached while expanding the macro `recursive` ) ) diff --git a/src/test/compile-fail/issue-13847.rs b/src/test/compile-fail/issue-13847.rs new file mode 100644 index 0000000000000..fb6d1d4fc6efe --- /dev/null +++ b/src/test/compile-fail/issue-13847.rs @@ -0,0 +1,14 @@ +// 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() { + return.is_failure +//~^ ERROR attempted access of field `is_failure` on type `!`, but no field with that name was found +} diff --git a/src/test/compile-fail/issue-15207.rs b/src/test/compile-fail/issue-15207.rs new file mode 100644 index 0000000000000..f1c0b622ae437 --- /dev/null +++ b/src/test/compile-fail/issue-15207.rs @@ -0,0 +1,13 @@ +// 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() { + loop { break.push(1); } //~ ERROR type `!` does not implement any method in scope named `push` +} diff --git a/src/test/compile-fail/issue-16048.rs b/src/test/compile-fail/issue-16048.rs new file mode 100644 index 0000000000000..dbd3336962b76 --- /dev/null +++ b/src/test/compile-fail/issue-16048.rs @@ -0,0 +1,36 @@ +// 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 NoLifetime { + fn get<'p, T : Test<'p>>(&self) -> T; +} + +trait Test<'p> { + fn new(buf: &'p mut [u8]) -> Self; +} + +struct Foo<'a> { + buf: &'a mut [u8], +} + +impl<'a> Test<'a> for Foo<'a> { + fn new(buf: &'a mut [u8]) -> Foo<'a> { + Foo { buf: buf } + } +} + +impl<'a> NoLifetime for Foo<'a> { + fn get<'p, T : Test<'a>>(&self) -> T { +//~^ ERROR lifetime parameters or bounds on method `get` do not match the trait declaration + return *self as T; //~ ERROR non-scalar cast: `Foo<'a>` as `T` + } +} + +fn main() {} diff --git a/src/test/compile-fail/issue-16098.rs b/src/test/compile-fail/issue-16098.rs new file mode 100644 index 0000000000000..5adcd7c2bb6d7 --- /dev/null +++ b/src/test/compile-fail/issue-16098.rs @@ -0,0 +1,28 @@ +// 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(macro_rules)] + +macro_rules! prob1 { + (0) => { + 0 + }; + ($n:expr) => { + if ($n % 3 == 0) || ($n % 5 == 0) { + $n + prob1!($n - 1); //~ ERROR recursion limit reached while expanding the macro `prob1` + } else { + prob1!($n - 1); + } + }; +} + +fn main() { + println!("Problem 1: {}", prob1!(1000)); +} diff --git a/src/test/compile-fail/issue-16562.rs b/src/test/compile-fail/issue-16562.rs new file mode 100644 index 0000000000000..1e69fb7bfc943 --- /dev/null +++ b/src/test/compile-fail/issue-16562.rs @@ -0,0 +1,26 @@ +// 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 MatrixShape {} + +struct Col { + data: D, + col: C, +} + +impl Collection for Col { +//~^ ERROR unable to infer enough type information to locate the impl of the trait +//~^^ NOTE the trait `core::kinds::Sized` must be implemented because it is required by + fn len(&self) -> uint { + unimplemented!() + } +} + +fn main() {} diff --git a/src/test/compile-fail/issue-16709.rs b/src/test/compile-fail/issue-16709.rs new file mode 100644 index 0000000000000..fc15801eb75b9 --- /dev/null +++ b/src/test/compile-fail/issue-16709.rs @@ -0,0 +1,23 @@ +// 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::ptr; +use std::raw; + +fn main() { + unsafe { + let nil: *const u8 = ptr::null(); + let slice: raw::Slice = + Slice { //~ ERROR use of trait `Slice` as a struct constructor [E0159] + data: nil, + len: 0, + }; + } +} diff --git a/src/test/compile-fail/issue-16747.rs b/src/test/compile-fail/issue-16747.rs new file mode 100644 index 0000000000000..012dc01ca97a8 --- /dev/null +++ b/src/test/compile-fail/issue-16747.rs @@ -0,0 +1,27 @@ +// 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 ListItem<'a> { + fn list_name() -> &'a str; +} + +struct List<'a, T: ListItem<'a>> { +//~^ ERROR the parameter type `T` may not live long enough; consider adding an explicit lifetime bo +//~^^ NOTE ...so that the reference type `&'a [T]` does not outlive the data it points at + slice: &'a [T] +} + +impl<'a, T: ListItem<'a>> Collection for List<'a, T> { + fn len(&self) -> uint { + 0 + } +} + +fn main() {} diff --git a/src/test/compile-fail/issue-17025.rs b/src/test/compile-fail/issue-17025.rs new file mode 100644 index 0000000000000..1efc78e13b83f --- /dev/null +++ b/src/test/compile-fail/issue-17025.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. + +enum A { + B(char), + C([Box]), +} + +fn c(c:char) -> A { + B(c) //~ ERROR cannot move a value of type A: the size of A cannot be statically determined +} + +pub fn main() {} diff --git a/src/test/compile-fail/issue-17450.rs b/src/test/compile-fail/issue-17450.rs new file mode 100644 index 0000000000000..ca611c625770d --- /dev/null +++ b/src/test/compile-fail/issue-17450.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. + +#![allow(dead_code)] + +static mut x: int = 3; +static mut y: int = unsafe { + x +//~^ ERROR cannot refer to other statics by value, use the address-of operator or a constant instea +}; + +fn main() {} diff --git a/src/test/compile-fail/issue-17636.rs b/src/test/compile-fail/issue-17636.rs new file mode 100644 index 0000000000000..635a184a9d30c --- /dev/null +++ b/src/test/compile-fail/issue-17636.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. + +trait MyItem {} +impl MyItem for T {} + +pub fn build_archive<'a, I: MyItem<&'a (|&uint|:'a)>>(files: I) {} + +fn main() { + build_archive(&(|_| { })); +//~^ ERROR unable to infer enough type information to locate the impl of the trait `MyItem<&|&uint| +} diff --git a/src/test/run-pass/issue-13105.rs b/src/test/run-pass/issue-13105.rs new file mode 100644 index 0000000000000..7fab36bd64ec7 --- /dev/null +++ b/src/test/run-pass/issue-13105.rs @@ -0,0 +1,15 @@ +// 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 quux(u8) {} +} + +fn main() {} diff --git a/src/test/run-pass/issue-13837.rs b/src/test/run-pass/issue-13837.rs new file mode 100644 index 0000000000000..221115a0869a5 --- /dev/null +++ b/src/test/run-pass/issue-13837.rs @@ -0,0 +1,13 @@ +// 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. + +static TEST_VALUE : *const [int, ..2] = 0x1234 as *const [int, ..2]; + +fn main() {} diff --git a/src/test/run-pass/issue-15261.rs b/src/test/run-pass/issue-15261.rs new file mode 100644 index 0000000000000..fbbd40895b283 --- /dev/null +++ b/src/test/run-pass/issue-15261.rs @@ -0,0 +1,15 @@ +// 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. + +static mut n_mut: uint = 0; + +static n: &'static uint = unsafe{ &n_mut }; + +fn main() {} diff --git a/src/test/run-pass/issue-16256.rs b/src/test/run-pass/issue-16256.rs new file mode 100644 index 0000000000000..48ea3a93296e3 --- /dev/null +++ b/src/test/run-pass/issue-16256.rs @@ -0,0 +1,14 @@ +// 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 mut buf = Vec::new(); + |c: u8| buf.push(c); +} diff --git a/src/test/run-pass/issue-16596.rs b/src/test/run-pass/issue-16596.rs new file mode 100644 index 0000000000000..df959fa0bda93 --- /dev/null +++ b/src/test/run-pass/issue-16596.rs @@ -0,0 +1,27 @@ +// 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 MatrixRow {} + +struct Mat; + +impl<'a> MatrixRow for &'a Mat {} + +struct Rows { + mat: M, +} + +impl<'a> Iterator<()> for Rows<&'a Mat> { + fn next(&mut self) -> Option<()> { + unimplemented!() + } +} + +fn main() {} diff --git a/src/test/run-pass/issue-17121.rs b/src/test/run-pass/issue-17121.rs new file mode 100644 index 0000000000000..f53bedc6daca5 --- /dev/null +++ b/src/test/run-pass/issue-17121.rs @@ -0,0 +1,39 @@ +// 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::io::BufReader; +use std::io::BufferedReader; +use std::io::File; +use std::io::IoResult; + +struct Lexer +{ + reader: BufferedReader, +} + +impl Lexer +{ + pub fn new_from_reader(r: R) -> Lexer + { + Lexer{reader: BufferedReader::new(r)} + } + + pub fn new_from_file(p: Path) -> IoResult> + { + Ok(Lexer::new_from_reader(try!(File::open(&p)))) + } + + pub fn new_from_str<'a>(s: &'a str) -> Lexer> + { + Lexer::new_from_reader(BufReader::new(s.as_bytes())) + } +} + +fn main() {} diff --git a/src/test/run-pass/issue-9249.rs b/src/test/run-pass/issue-9249.rs new file mode 100644 index 0000000000000..013aef5722359 --- /dev/null +++ b/src/test/run-pass/issue-9249.rs @@ -0,0 +1,12 @@ +// 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. + +static DATA:&'static [&'static str] = ["my string"]; +fn main() { } diff --git a/src/test/run-pass/parse-fail.rs b/src/test/run-pass/parse-fail.rs index 52a857e21e588..34c5bf0234f18 100644 --- a/src/test/run-pass/parse-fail.rs +++ b/src/test/run-pass/parse-fail.rs @@ -10,6 +10,6 @@ #![allow(unreachable_code)] -fn dont_call_me() { fail!(); println!("{}", 1); } +fn dont_call_me() { fail!(); println!("{}", 1i); } pub fn main() { }