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());
}
macro_rules! recursive(
() => (
- recursive!() //~ ERROR Recursion limit reached while expanding the macro `recursive`
+ recursive!() //~ ERROR recursion limit reached while expanding the macro `recursive`
)
)
--- /dev/null
+// 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 <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.
+
+fn main() {
+ return.is_failure
+//~^ ERROR attempted access of field `is_failure` on type `!`, but no field with that name was found
+}
--- /dev/null
+// 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 <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.
+
+fn main() {
+ loop { break.push(1); } //~ ERROR type `!` does not implement any method in scope named `push`
+}
--- /dev/null
+// 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 <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 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() {}
--- /dev/null
+// 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 <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(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));
+}
--- /dev/null
+// 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 <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 MatrixShape {}
+
+struct Col<D, C> {
+ data: D,
+ col: C,
+}
+
+impl<T, M: MatrixShape> Collection for Col<M, uint> {
+//~^ 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() {}
--- /dev/null
+// 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 <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.
+
+use std::ptr;
+use std::raw;
+
+fn main() {
+ unsafe {
+ let nil: *const u8 = ptr::null();
+ let slice: raw::Slice<u8> =
+ Slice { //~ ERROR use of trait `Slice` as a struct constructor [E0159]
+ data: nil,
+ len: 0,
+ };
+ }
+}
--- /dev/null
+// 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 <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 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() {}
--- /dev/null
+// 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 <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.
+
+enum A {
+ B(char),
+ C([Box<A>]),
+}
+
+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() {}
--- /dev/null
+// 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 <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.
+
+#![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() {}
--- /dev/null
+// 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 <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 MyItem<T> {}
+impl<T> MyItem<T> 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|
+}
--- /dev/null
+// 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 <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 {
+ fn quux(u8) {}
+}
+
+fn main() {}
--- /dev/null
+// 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 <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.
+
+static TEST_VALUE : *const [int, ..2] = 0x1234 as *const [int, ..2];
+
+fn main() {}
--- /dev/null
+// 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 <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.
+
+static mut n_mut: uint = 0;
+
+static n: &'static uint = unsafe{ &n_mut };
+
+fn main() {}
--- /dev/null
+// 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 <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.
+
+fn main() {
+ let mut buf = Vec::new();
+ |c: u8| buf.push(c);
+}
--- /dev/null
+// 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 <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 MatrixRow {}
+
+struct Mat;
+
+impl<'a> MatrixRow for &'a Mat {}
+
+struct Rows<M: MatrixRow> {
+ mat: M,
+}
+
+impl<'a> Iterator<()> for Rows<&'a Mat> {
+ fn next(&mut self) -> Option<()> {
+ unimplemented!()
+ }
+}
+
+fn main() {}
--- /dev/null
+// 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 <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.
+
+use std::io::BufReader;
+use std::io::BufferedReader;
+use std::io::File;
+use std::io::IoResult;
+
+struct Lexer<R: Reader>
+{
+ reader: BufferedReader<R>,
+}
+
+impl<R: Reader> Lexer<R>
+{
+ pub fn new_from_reader(r: R) -> Lexer<R>
+ {
+ Lexer{reader: BufferedReader::new(r)}
+ }
+
+ pub fn new_from_file(p: Path) -> IoResult<Lexer<File>>
+ {
+ Ok(Lexer::new_from_reader(try!(File::open(&p))))
+ }
+
+ pub fn new_from_str<'a>(s: &'a str) -> Lexer<BufReader<'a>>
+ {
+ Lexer::new_from_reader(BufReader::new(s.as_bytes()))
+ }
+}
+
+fn main() {}
--- /dev/null
+// 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 <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.
+
+static DATA:&'static [&'static str] = ["my string"];
+fn main() { }
#![allow(unreachable_code)]
-fn dont_call_me() { fail!(); println!("{}", 1); }
+fn dont_call_me() { fail!(); println!("{}", 1i); }
pub fn main() { }