diff options
| author | Graydon Hoare <[email protected]> | 2010-06-23 21:03:09 -0700 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2010-06-23 21:03:09 -0700 |
| commit | d6b7c96c3eb29b9244ece0c046d3f372ff432d04 (patch) | |
| tree | b425187e232966063ffc2f0d14c04a55d8f004ef /src/test/compile-fail | |
| parent | Initial git commit. (diff) | |
| download | rust-d6b7c96c3eb29b9244ece0c046d3f372ff432d04.tar.xz rust-d6b7c96c3eb29b9244ece0c046d3f372ff432d04.zip | |
Populate tree.
Diffstat (limited to 'src/test/compile-fail')
35 files changed, 358 insertions, 0 deletions
diff --git a/src/test/compile-fail/arg-count-mismatch.rs b/src/test/compile-fail/arg-count-mismatch.rs new file mode 100644 index 00000000..18f4104e --- /dev/null +++ b/src/test/compile-fail/arg-count-mismatch.rs @@ -0,0 +1,9 @@ +// error-pattern: mismatched types + +fn f(int x) { +} + +fn main() { + let () i; + i = f(); +} diff --git a/src/test/compile-fail/arg-type-mismatch.rs b/src/test/compile-fail/arg-type-mismatch.rs new file mode 100644 index 00000000..3a61992a --- /dev/null +++ b/src/test/compile-fail/arg-type-mismatch.rs @@ -0,0 +1,10 @@ + +// error-pattern: mismatched types + +fn f(int x) { +} + +fn main() { + let () i; + i = f(()); +}
\ No newline at end of file diff --git a/src/test/compile-fail/bad-env-capture.rs b/src/test/compile-fail/bad-env-capture.rs new file mode 100644 index 00000000..013bb56e --- /dev/null +++ b/src/test/compile-fail/bad-env-capture.rs @@ -0,0 +1,10 @@ +// error-pattern: attempted dynamic environment-capture +fn foo() { + let int x; + fn bar() { + log x; + } +} +fn main() { + foo(); +}
\ No newline at end of file diff --git a/src/test/compile-fail/bad-main.rs b/src/test/compile-fail/bad-main.rs new file mode 100644 index 00000000..8e3fa503 --- /dev/null +++ b/src/test/compile-fail/bad-main.rs @@ -0,0 +1,4 @@ +// error-pattern: bad type signature + +fn main(int x) { +} diff --git a/src/test/compile-fail/bad-name.rs b/src/test/compile-fail/bad-name.rs new file mode 100644 index 00000000..44a30219 --- /dev/null +++ b/src/test/compile-fail/bad-name.rs @@ -0,0 +1,6 @@ + +// error-pattern: malformed name + +fn main() { + let x.y[int].z foo; +} diff --git a/src/test/compile-fail/bad-type-env-capture.rs b/src/test/compile-fail/bad-type-env-capture.rs new file mode 100644 index 00000000..e18e63a7 --- /dev/null +++ b/src/test/compile-fail/bad-type-env-capture.rs @@ -0,0 +1,3 @@ +// error-pattern: attempted dynamic environment-capture +fn foo[T]() { obj bar(T b) {} } +fn main() {}
\ No newline at end of file diff --git a/src/test/compile-fail/bogus-tag.rs b/src/test/compile-fail/bogus-tag.rs new file mode 100644 index 00000000..35c5736c --- /dev/null +++ b/src/test/compile-fail/bogus-tag.rs @@ -0,0 +1,19 @@ +// -*- rust -*- + +type color = tag( + rgb(int, int, int), + rgba(int, int, int, int) +); + +fn main() -> () { + let color red = rgb(255, 0, 0); + alt (red) { + case (rgb(int r, int g, int b)) { + log "rgb"; + } + case (hsl(int h, int s, int l)) { + log "hsl"; + } + } +} + diff --git a/src/test/compile-fail/comm-makes-io.rs b/src/test/compile-fail/comm-makes-io.rs new file mode 100644 index 00000000..50f87d0c --- /dev/null +++ b/src/test/compile-fail/comm-makes-io.rs @@ -0,0 +1,6 @@ +// error-pattern: calculated effect is 'io' + +fn main() { + let chan[int] c = chan(); + c <| 10; +}
\ No newline at end of file diff --git a/src/test/compile-fail/dead-code-be.rs b/src/test/compile-fail/dead-code-be.rs new file mode 100644 index 00000000..060b466a --- /dev/null +++ b/src/test/compile-fail/dead-code-be.rs @@ -0,0 +1,11 @@ +// -*- rust -*- + +fn f(str caller) { + log caller; +} + +fn main() { + be f("main"); + log "Paul is dead"; +} + diff --git a/src/test/compile-fail/dead-code-ret.rs b/src/test/compile-fail/dead-code-ret.rs new file mode 100644 index 00000000..7fbdcb0e --- /dev/null +++ b/src/test/compile-fail/dead-code-ret.rs @@ -0,0 +1,11 @@ +// -*- rust -*- + +fn f(str caller) { + log caller; +} + +fn main() { + ret f("main"); + log "Paul is dead"; +} + diff --git a/src/test/compile-fail/direct-obj-fn-call.rs b/src/test/compile-fail/direct-obj-fn-call.rs new file mode 100644 index 00000000..e13db876 --- /dev/null +++ b/src/test/compile-fail/direct-obj-fn-call.rs @@ -0,0 +1,12 @@ + +// error-pattern: mismatched types + +obj x() { + fn hello() { + log "hello"; + } +} + +fn main() { + x.hello(); +}
\ No newline at end of file diff --git a/src/test/compile-fail/export.rs b/src/test/compile-fail/export.rs new file mode 100644 index 00000000..7a00f221 --- /dev/null +++ b/src/test/compile-fail/export.rs @@ -0,0 +1,14 @@ +// error-pattern: unknown module item +mod foo { + export x; + fn x(int y) { + log y; + } + fn z(int y) { + log y; + } +} + +fn main() { + foo.z(10); +} diff --git a/src/test/compile-fail/fru-extra-field.rs b/src/test/compile-fail/fru-extra-field.rs new file mode 100644 index 00000000..2762b54f --- /dev/null +++ b/src/test/compile-fail/fru-extra-field.rs @@ -0,0 +1,9 @@ +// -*- rust -*- + +type point = rec(int x, int y); + +fn main() { + let point origin = rec(x=0, y=0); + + let point origin3d = rec(z=0 with origin); +} diff --git a/src/test/compile-fail/fru-typestate.rs b/src/test/compile-fail/fru-typestate.rs new file mode 100644 index 00000000..c15683c8 --- /dev/null +++ b/src/test/compile-fail/fru-typestate.rs @@ -0,0 +1,10 @@ +// -*- rust -*- + +type point = rec(int x, int y); + +fn main() { + let point origin; + + let point right = rec(x=10 with origin); + origin = rec(x=0, y=0); +} diff --git a/src/test/compile-fail/impure-pred.rs b/src/test/compile-fail/impure-pred.rs new file mode 100644 index 00000000..811d595a --- /dev/null +++ b/src/test/compile-fail/impure-pred.rs @@ -0,0 +1,19 @@ +// -*- rust -*- + +// error-pattern: impure function used in constraint + +fn f(int a, int b) : lt(a,b) { +} + +io fn lt(int a, int b) -> bool { + let port[int] p = port(); + let chan[int] c = chan(p); + c <| 10; +} + +fn main() { + let int a = 10; + let int b = 23; + check lt(a,b); + f(a,b); +} diff --git a/src/test/compile-fail/infinite-tag-type-recursion.rs b/src/test/compile-fail/infinite-tag-type-recursion.rs new file mode 100644 index 00000000..19aea090 --- /dev/null +++ b/src/test/compile-fail/infinite-tag-type-recursion.rs @@ -0,0 +1,9 @@ +// -*- rust -*- + +// error-pattern: Infinite type recursion + +type mlist = tag(cons(int,mlist), nil()); + +fn main() { + auto a = cons(10, cons(11, nil())); +} diff --git a/src/test/compile-fail/infinite-vec-type-recursion.rs b/src/test/compile-fail/infinite-vec-type-recursion.rs new file mode 100644 index 00000000..7c82700a --- /dev/null +++ b/src/test/compile-fail/infinite-vec-type-recursion.rs @@ -0,0 +1,9 @@ +// -*- rust -*- + +// error-pattern: Infinite type recursion + +type x = vec[x]; + +fn main() { + let x b = vec(); +} diff --git a/src/test/compile-fail/io-infects-caller.rs b/src/test/compile-fail/io-infects-caller.rs new file mode 100644 index 00000000..2f5f003f --- /dev/null +++ b/src/test/compile-fail/io-infects-caller.rs @@ -0,0 +1,10 @@ +// error-pattern: calculated effect is 'io' + +io fn foo() { + let chan[int] c = chan(); + c <| 10; +} + +fn main() { + foo(); +}
\ No newline at end of file diff --git a/src/test/compile-fail/log-type-error.rs b/src/test/compile-fail/log-type-error.rs new file mode 100644 index 00000000..c8a5df9c --- /dev/null +++ b/src/test/compile-fail/log-type-error.rs @@ -0,0 +1,6 @@ +// error-pattern: mismatched types + +fn main() { + log main; +} + diff --git a/src/test/compile-fail/native-makes-unsafe.rs b/src/test/compile-fail/native-makes-unsafe.rs new file mode 100644 index 00000000..d6e77b0d --- /dev/null +++ b/src/test/compile-fail/native-makes-unsafe.rs @@ -0,0 +1,9 @@ +// error-pattern: calculated effect is 'unsafe' + +native mod foo { + fn naughty(); +} + +fn main() { + foo.naughty(); +}
\ No newline at end of file diff --git a/src/test/compile-fail/not-a-pred.rs b/src/test/compile-fail/not-a-pred.rs new file mode 100644 index 00000000..4a899512 --- /dev/null +++ b/src/test/compile-fail/not-a-pred.rs @@ -0,0 +1,16 @@ +// -*- rust -*- + +// error-pattern: mismatched types + +fn f(int a, int b) : lt(a,b) { +} + +obj lt(int a, int b) { +} + +fn main() { + let int a = 10; + let int b = 23; + check lt(a,b); + f(a,b); +} diff --git a/src/test/compile-fail/output-type-mismatch.rs b/src/test/compile-fail/output-type-mismatch.rs new file mode 100644 index 00000000..c979f065 --- /dev/null +++ b/src/test/compile-fail/output-type-mismatch.rs @@ -0,0 +1,9 @@ +// error-pattern: mismatched types + +fn f() { +} + +fn main() { + let int i; + i = f(); +} diff --git a/src/test/compile-fail/pred-on-wrong-slots.rs b/src/test/compile-fail/pred-on-wrong-slots.rs new file mode 100644 index 00000000..cf31b8bd --- /dev/null +++ b/src/test/compile-fail/pred-on-wrong-slots.rs @@ -0,0 +1,20 @@ +// -*- rust -*- + +// error-pattern: Unsatisfied .* lt(a, c) + +fn f(int a, int b) : lt(a,b) { +} + +fn lt(int a, int b) -> bool { + ret a < b; +} + +fn main() { + let int a = 10; + let int b = 23; + let int c = 77; + check lt(a,b); + check lt(b,c); + f(a,b); + f(a,c); +} diff --git a/src/test/compile-fail/rec-missing-fields.rs b/src/test/compile-fail/rec-missing-fields.rs new file mode 100644 index 00000000..83736d5e --- /dev/null +++ b/src/test/compile-fail/rec-missing-fields.rs @@ -0,0 +1,10 @@ +// -*- rust -*- + +// Issue #51. + +type point = rec(int x, int y); + +fn main() { + let point p = rec(x=10); + log p.y; +} diff --git a/src/test/compile-fail/return-uninit.rs b/src/test/compile-fail/return-uninit.rs new file mode 100644 index 00000000..37117169 --- /dev/null +++ b/src/test/compile-fail/return-uninit.rs @@ -0,0 +1,10 @@ +// error-pattern: precondition constraint + +fn f() -> int { + let int x; + ret x; +} + +fn main() { + f(); +}
\ No newline at end of file diff --git a/src/test/compile-fail/slot-as-pred.rs b/src/test/compile-fail/slot-as-pred.rs new file mode 100644 index 00000000..1da8df84 --- /dev/null +++ b/src/test/compile-fail/slot-as-pred.rs @@ -0,0 +1,14 @@ +// -*- rust -*- + +// error-pattern: mismatched types + +fn f(int a, int b) : lt(a,b) { +} + +fn main() { + let int lt; + let int a = 10; + let int b = 23; + check lt(a,b); + f(a,b); +} diff --git a/src/test/compile-fail/spawn-non-nil-fn.rs b/src/test/compile-fail/spawn-non-nil-fn.rs new file mode 100644 index 00000000..4d869bba --- /dev/null +++ b/src/test/compile-fail/spawn-non-nil-fn.rs @@ -0,0 +1,9 @@ +// error-pattern: mismatched types + +fn f(int x) -> int { + ret x; +} + +fn main() { + spawn f(10); +} diff --git a/src/test/compile-fail/type-shadow.rs b/src/test/compile-fail/type-shadow.rs new file mode 100644 index 00000000..8f8aff9a --- /dev/null +++ b/src/test/compile-fail/type-shadow.rs @@ -0,0 +1,12 @@ +// -*- rust -*- + +// error-pattern: mismatched types + +fn main() { + type X = int; + type Y = X; + if (true) { + type X = str; + let Y y = "hello"; + } +} diff --git a/src/test/compile-fail/unnecessary-io.rs b/src/test/compile-fail/unnecessary-io.rs new file mode 100644 index 00000000..45a93798 --- /dev/null +++ b/src/test/compile-fail/unnecessary-io.rs @@ -0,0 +1,4 @@ +// error-pattern: calculated effect is '' +io fn main() { + log "hi"; +}
\ No newline at end of file diff --git a/src/test/compile-fail/unnecessary-unsafe.rs b/src/test/compile-fail/unnecessary-unsafe.rs new file mode 100644 index 00000000..6705bf34 --- /dev/null +++ b/src/test/compile-fail/unnecessary-unsafe.rs @@ -0,0 +1,4 @@ +// error-pattern: calculated effect is '' +unsafe fn main() { + log "hi"; +}
\ No newline at end of file diff --git a/src/test/compile-fail/unsafe-infects-caller.rs b/src/test/compile-fail/unsafe-infects-caller.rs new file mode 100644 index 00000000..28daea6c --- /dev/null +++ b/src/test/compile-fail/unsafe-infects-caller.rs @@ -0,0 +1,13 @@ +// error-pattern: calculated effect is 'unsafe' + +native mod foo { + fn naughty(); +} + +unsafe fn bar() { + foo.naughty(); +} + +fn main() { + bar(); +}
\ No newline at end of file diff --git a/src/test/compile-fail/while-bypass.rs b/src/test/compile-fail/while-bypass.rs new file mode 100644 index 00000000..1de89e90 --- /dev/null +++ b/src/test/compile-fail/while-bypass.rs @@ -0,0 +1,13 @@ +// error-pattern: precondition constraint + +fn f() -> int { + let int x; + while(true) { + x = 10; + } + ret x; +} + +fn main() { + f(); +} diff --git a/src/test/compile-fail/while-expr.rs b/src/test/compile-fail/while-expr.rs new file mode 100644 index 00000000..9077c18f --- /dev/null +++ b/src/test/compile-fail/while-expr.rs @@ -0,0 +1,7 @@ +// error-pattern: precondition constraint + +fn main() { + let bool x; + while(x) { + } +} diff --git a/src/test/compile-fail/while-type-error.rs b/src/test/compile-fail/while-type-error.rs new file mode 100644 index 00000000..07d7867e --- /dev/null +++ b/src/test/compile-fail/while-type-error.rs @@ -0,0 +1,7 @@ +// error-pattern: mismatched types + +fn main() { + while (main) { + } +} + diff --git a/src/test/compile-fail/writing-through-read-alias.rs b/src/test/compile-fail/writing-through-read-alias.rs new file mode 100644 index 00000000..b3d21521 --- /dev/null +++ b/src/test/compile-fail/writing-through-read-alias.rs @@ -0,0 +1,14 @@ +// -*- rust -*- + +// error-pattern: writing to non-mutable slot + +type point = rec(int x, int y, int z); + +fn f(&point p) { + p.x = 13; +} + +fn main() { + let point x = rec(x=10, y=11, z=12); + f(x); +} |