rust/src/test/compile-fail/obsolete-syntax.rs
Niko Matsakis b0ed151539 Cleanup how we handle proto in types, remove unsound subtyping
Fixes #1896 which was never truly fixed, just masked.
The given tests would have failed had they used `~fn()` and
not `@fn()`.  They now result in compilation errors.

Fixes #2978.

Necessary first step for #2202, #2263.
2012-11-06 08:56:29 -08:00

67 lines
1.5 KiB
Rust

fn f1<T: copy>() -> T { }
//~^ ERROR obsolete syntax: lower-case kind bounds
fn f1<T: send>() -> T { }
//~^ ERROR obsolete syntax: lower-case kind bounds
fn f1<T: const>() -> T { }
//~^ ERROR obsolete syntax: lower-case kind bounds
fn f1<T: owned>() -> T { }
//~^ ERROR obsolete syntax: lower-case kind bounds
struct s {
let foo: (),
//~^ ERROR obsolete syntax: `let` in field declaration
bar: ();
//~^ ERROR obsolete syntax: field declaration terminated with semicolon
new() { }
//~^ ERROR obsolete syntax: struct constructor
}
struct ss {
fn foo() { }
//~^ ERROR obsolete syntax: class method
#[whatever]
fn foo() { }
//~^ ERROR obsolete syntax: class method
}
struct q : r {
//~^ ERROR obsolete syntax: class traits
}
struct sss {
priv {
//~^ ERROR obsolete syntax: private section
foo: ()
}
}
fn obsolete_with() {
struct S {
foo: (),
bar: (),
}
let a = S { foo: (), bar: () };
let b = S { foo: () with a };
//~^ ERROR obsolete syntax: with
let c = S { foo: (), with a };
//~^ ERROR obsolete syntax: with
let a = { foo: (), bar: () };
let b = { foo: () with a };
//~^ ERROR obsolete syntax: with
let c = { foo: (), with a };
//~^ ERROR obsolete syntax: with
}
fn obsolete_moves() {
let mut x = 0;
let y <- x;
//~^ ERROR obsolete syntax: initializer-by-move
y <- x;
//~^ ERROR obsolete syntax: binary move
}
fn main() { }