aboutsummaryrefslogtreecommitdiff
path: root/src/test/compile-fail
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2010-06-23 21:03:09 -0700
committerGraydon Hoare <[email protected]>2010-06-23 21:03:09 -0700
commitd6b7c96c3eb29b9244ece0c046d3f372ff432d04 (patch)
treeb425187e232966063ffc2f0d14c04a55d8f004ef /src/test/compile-fail
parentInitial git commit. (diff)
downloadrust-d6b7c96c3eb29b9244ece0c046d3f372ff432d04.tar.xz
rust-d6b7c96c3eb29b9244ece0c046d3f372ff432d04.zip
Populate tree.
Diffstat (limited to 'src/test/compile-fail')
-rw-r--r--src/test/compile-fail/arg-count-mismatch.rs9
-rw-r--r--src/test/compile-fail/arg-type-mismatch.rs10
-rw-r--r--src/test/compile-fail/bad-env-capture.rs10
-rw-r--r--src/test/compile-fail/bad-main.rs4
-rw-r--r--src/test/compile-fail/bad-name.rs6
-rw-r--r--src/test/compile-fail/bad-type-env-capture.rs3
-rw-r--r--src/test/compile-fail/bogus-tag.rs19
-rw-r--r--src/test/compile-fail/comm-makes-io.rs6
-rw-r--r--src/test/compile-fail/dead-code-be.rs11
-rw-r--r--src/test/compile-fail/dead-code-ret.rs11
-rw-r--r--src/test/compile-fail/direct-obj-fn-call.rs12
-rw-r--r--src/test/compile-fail/export.rs14
-rw-r--r--src/test/compile-fail/fru-extra-field.rs9
-rw-r--r--src/test/compile-fail/fru-typestate.rs10
-rw-r--r--src/test/compile-fail/impure-pred.rs19
-rw-r--r--src/test/compile-fail/infinite-tag-type-recursion.rs9
-rw-r--r--src/test/compile-fail/infinite-vec-type-recursion.rs9
-rw-r--r--src/test/compile-fail/io-infects-caller.rs10
-rw-r--r--src/test/compile-fail/log-type-error.rs6
-rw-r--r--src/test/compile-fail/native-makes-unsafe.rs9
-rw-r--r--src/test/compile-fail/not-a-pred.rs16
-rw-r--r--src/test/compile-fail/output-type-mismatch.rs9
-rw-r--r--src/test/compile-fail/pred-on-wrong-slots.rs20
-rw-r--r--src/test/compile-fail/rec-missing-fields.rs10
-rw-r--r--src/test/compile-fail/return-uninit.rs10
-rw-r--r--src/test/compile-fail/slot-as-pred.rs14
-rw-r--r--src/test/compile-fail/spawn-non-nil-fn.rs9
-rw-r--r--src/test/compile-fail/type-shadow.rs12
-rw-r--r--src/test/compile-fail/unnecessary-io.rs4
-rw-r--r--src/test/compile-fail/unnecessary-unsafe.rs4
-rw-r--r--src/test/compile-fail/unsafe-infects-caller.rs13
-rw-r--r--src/test/compile-fail/while-bypass.rs13
-rw-r--r--src/test/compile-fail/while-expr.rs7
-rw-r--r--src/test/compile-fail/while-type-error.rs7
-rw-r--r--src/test/compile-fail/writing-through-read-alias.rs14
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);
+}