diff --git a/src/test/compile-fail/impure-pred.rs b/src/test/compile-fail/impure-pred.rs new file mode 100644 index 000000000000..b5ebc10e72f2 --- /dev/null +++ b/src/test/compile-fail/impure-pred.rs @@ -0,0 +1,17 @@ +// -*- rust -*- +// xfail-boot +// xfail-stage0 +// error-pattern: impure function + +fn g() -> () {} + +pred f(int q) -> bool { + g(); + ret true; +} + +fn main() { + auto x = 0; + + check f(x); +} diff --git a/src/test/compile-fail/not-a-pred-2.rs b/src/test/compile-fail/not-a-pred-2.rs index c8ac4a08adb3..07ea13b35eb4 100644 --- a/src/test/compile-fail/not-a-pred-2.rs +++ b/src/test/compile-fail/not-a-pred-2.rs @@ -1,5 +1,6 @@ // -*- rust -*- // xfail-boot +// xfail-stage0 // error-pattern: non-predicate diff --git a/src/test/compile-fail/not-a-pred-3.rs b/src/test/compile-fail/not-a-pred-3.rs index ea1b6cc09657..f4dafd204d79 100644 --- a/src/test/compile-fail/not-a-pred-3.rs +++ b/src/test/compile-fail/not-a-pred-3.rs @@ -1,5 +1,6 @@ // -*- rust -*- // xfail-boot +// xfail-stage0 // error-pattern: expected the constraint name diff --git a/src/test/compile-fail/not-a-pred-check.rs b/src/test/compile-fail/not-a-pred-check.rs new file mode 100644 index 000000000000..55698ad26414 --- /dev/null +++ b/src/test/compile-fail/not-a-pred-check.rs @@ -0,0 +1,12 @@ +// -*- rust -*- +// xfail-boot +// xfail-stage0 +// error-pattern: non-predicate + +fn f(int q) -> bool { ret true; } + +fn main() { + auto x = 0; + + check f(x); +} diff --git a/src/test/compile-fail/not-pred-args.rs b/src/test/compile-fail/not-pred-args.rs index c92b4ff9cae4..7fe6220ad98f 100644 --- a/src/test/compile-fail/not-pred-args.rs +++ b/src/test/compile-fail/not-pred-args.rs @@ -1,5 +1,6 @@ // -*- rust -*- // xfail-boot +// xfail-stage0 // error-pattern: Constraint args must be diff --git a/src/test/compile-fail/pred-not-bool.rs b/src/test/compile-fail/pred-not-bool.rs new file mode 100644 index 000000000000..c0d19ef2c9fc --- /dev/null +++ b/src/test/compile-fail/pred-not-bool.rs @@ -0,0 +1,13 @@ +// -*- rust -*- + +// error-pattern: mismatched types + +// this checks that a pred with a non-bool return +// type is rejected, even if the pred is never used + +pred bad(int a) -> int { + ret 37; +} + +fn main() { +} diff --git a/src/test/run-pass/pred-check.rs b/src/test/run-pass/pred-check.rs new file mode 100644 index 000000000000..e099756469ba --- /dev/null +++ b/src/test/run-pass/pred-check.rs @@ -0,0 +1,11 @@ +// -*- rust -*- +// xfail-boot +// xfail-stage0 + +pred f(int q) -> bool { ret true; } + +fn main() { + auto x = 0; + + check f(x); +} diff --git a/src/test/run-pass/pred.rs b/src/test/run-pass/pred.rs index 022e1fc4f8a2..b4d003a87740 100644 --- a/src/test/run-pass/pred.rs +++ b/src/test/run-pass/pred.rs @@ -1,12 +1,10 @@ // xfail-stage0 -// xfail-stage1 -// xfail-stage2 // -*- rust -*- fn f(int a, int b) : lt(a,b) { } -fn lt(int a, int b) -> bool { +pred lt(int a, int b) -> bool { ret a < b; }