From 0d60918855aefde24ee8d72238b167ef1b09628b Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Mon, 7 Mar 2011 18:13:39 -0800 Subject: Most of the way through genericizing bind properly with new malloc path. Still getting the thunk call wrong. --- src/test/run-pass/generic-bind.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/test') diff --git a/src/test/run-pass/generic-bind.rs b/src/test/run-pass/generic-bind.rs index 61085eb5..5f44bcee 100644 --- a/src/test/run-pass/generic-bind.rs +++ b/src/test/run-pass/generic-bind.rs @@ -3,6 +3,11 @@ fn id[T](&T t) -> T { } fn main() { - auto f = bind id[int](_); - check (f(10) == 10); + auto t = tup(1,2,3,4,5,6,7); + check (t._5 == 6); + // FIXME: this needs to work. + // auto f0 = bind id[tup(int,int,int,int,int,int,int)](t); + auto f1 = bind id[tup(int,int,int,int,int,int,int)](_); + // check (f0()._5 == 6); + check (f1(t)._5 == 6); } -- cgit v1.2.3 From 01bfc3ae8bff5131cfd1db748ca996bdb86e100e Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Tue, 8 Mar 2011 16:31:37 -0800 Subject: Fix generic-bind support for bound aliases and generics. --- src/test/run-pass/generic-bind-2.rs | 10 ++++++++++ src/test/run-pass/generic-bind.rs | 3 --- 2 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 src/test/run-pass/generic-bind-2.rs (limited to 'src/test') diff --git a/src/test/run-pass/generic-bind-2.rs b/src/test/run-pass/generic-bind-2.rs new file mode 100644 index 00000000..95a8cab4 --- /dev/null +++ b/src/test/run-pass/generic-bind-2.rs @@ -0,0 +1,10 @@ +fn id[T](&T t) -> T { + ret t; +} + +fn main() { + auto t = tup(1,2,3,4,5,6,7); + check (t._5 == 6); + auto f0 = bind id[tup(int,int,int,int,int,int,int)](t); + check (f0()._5 == 6); +} diff --git a/src/test/run-pass/generic-bind.rs b/src/test/run-pass/generic-bind.rs index 5f44bcee..ef1275e3 100644 --- a/src/test/run-pass/generic-bind.rs +++ b/src/test/run-pass/generic-bind.rs @@ -5,9 +5,6 @@ fn id[T](&T t) -> T { fn main() { auto t = tup(1,2,3,4,5,6,7); check (t._5 == 6); - // FIXME: this needs to work. - // auto f0 = bind id[tup(int,int,int,int,int,int,int)](t); auto f1 = bind id[tup(int,int,int,int,int,int,int)](_); - // check (f0()._5 == 6); check (f1(t)._5 == 6); } -- cgit v1.2.3 From fcd195bb4ca47d4b3c7dfd3e6c14dc5771e139cc Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Wed, 9 Mar 2011 11:33:44 -0800 Subject: rustc: Don't try to load dynamically-sized types when translating tag variants. Add a test case for this. --- src/test/run-pass/simple-generic-tag.rs | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/test/run-pass/simple-generic-tag.rs (limited to 'src/test') diff --git a/src/test/run-pass/simple-generic-tag.rs b/src/test/run-pass/simple-generic-tag.rs new file mode 100644 index 00000000..ba6a3242 --- /dev/null +++ b/src/test/run-pass/simple-generic-tag.rs @@ -0,0 +1,7 @@ +tag clam[T] { + a(T); +} + +fn main() { +} + -- cgit v1.2.3 From 2986ed43e9326d87e97072979a44ebe22e829d66 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Wed, 9 Mar 2011 13:31:25 -0800 Subject: rustc: Substitute type parameters in type_of_variant(). Add a test case. --- src/test/run-pass/generic-tag-local.rs | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/test/run-pass/generic-tag-local.rs (limited to 'src/test') diff --git a/src/test/run-pass/generic-tag-local.rs b/src/test/run-pass/generic-tag-local.rs new file mode 100644 index 00000000..63e2e195 --- /dev/null +++ b/src/test/run-pass/generic-tag-local.rs @@ -0,0 +1,8 @@ +tag clam[T] { + a(T); +} + +fn main() { + auto c = a(3); +} + -- cgit v1.2.3 From 603d820b85ef6fa62721c931ec9a6010fbda9115 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Wed, 9 Mar 2011 14:09:02 -0800 Subject: rustc: Have demand_pat() extract type parameters from tags. Add a test case. --- src/test/run-pass/simple-generic-alt.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/test/run-pass/simple-generic-alt.rs (limited to 'src/test') diff --git a/src/test/run-pass/simple-generic-alt.rs b/src/test/run-pass/simple-generic-alt.rs new file mode 100644 index 00000000..85db5c7c --- /dev/null +++ b/src/test/run-pass/simple-generic-alt.rs @@ -0,0 +1,11 @@ +tag clam[T] { + a(T); +} + +fn main() { + auto c = a(2); + alt (c) { + case (a[int](_)) {} + } +} + -- cgit v1.2.3 From ff15a93d952f0456c8e88d320bb1be27b7801443 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Wed, 9 Mar 2011 14:12:08 -0800 Subject: rustc: Make test/run-pass/generic-tag-alt.rs valid Rust; it was passing a dynamically-sized value by value instead of by alias --- src/test/run-pass/generic-tag-alt.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/test') diff --git a/src/test/run-pass/generic-tag-alt.rs b/src/test/run-pass/generic-tag-alt.rs index 4f04e729..9b19eec7 100644 --- a/src/test/run-pass/generic-tag-alt.rs +++ b/src/test/run-pass/generic-tag-alt.rs @@ -2,7 +2,7 @@ tag foo[T] { arm(T); } -fn altfoo[T](foo[T] f) { +fn altfoo[T](&foo[T] f) { auto hit = false; alt (f) { case (arm[T](?x)) { -- cgit v1.2.3 From 8e8c336f93becbc394b99e978cc3d8145e7e9d7c Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Wed, 9 Mar 2011 20:14:19 -0800 Subject: Implement deep structural comparison through boxes and sequences. --- src/test/run-pass/box-compare.rs | 5 +++++ src/test/run-pass/seq-compare.rs | 15 +++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 src/test/run-pass/box-compare.rs create mode 100644 src/test/run-pass/seq-compare.rs (limited to 'src/test') diff --git a/src/test/run-pass/box-compare.rs b/src/test/run-pass/box-compare.rs new file mode 100644 index 00000000..5115d510 --- /dev/null +++ b/src/test/run-pass/box-compare.rs @@ -0,0 +1,5 @@ +fn main() { + check (@1 < @3); + check (@@"hello " > @@"hello"); + check (@@@"hello" != @@@"there"); +} \ No newline at end of file diff --git a/src/test/run-pass/seq-compare.rs b/src/test/run-pass/seq-compare.rs new file mode 100644 index 00000000..b3fe5701 --- /dev/null +++ b/src/test/run-pass/seq-compare.rs @@ -0,0 +1,15 @@ +fn main() { + check ("hello" < "hellr"); + check ("hello " > "hello"); + check ("hello" != "there"); + + check (vec(1,2,3,4) > vec(1,2,3)); + check (vec(1,2,3) < vec(1,2,3,4)); + check (vec(1,2,4,4) > vec(1,2,3,4)); + check (vec(1,2,3,4) < vec(1,2,4,4)); + check (vec(1,2,3) <= vec(1,2,3)); + check (vec(1,2,3) <= vec(1,2,3,3)); + check (vec(1,2,3,4) > vec(1,2,3)); + check (vec(1,2,3) == vec(1,2,3)); + check (vec(1,2,3) != vec(1,1,3)); +} \ No newline at end of file -- cgit v1.2.3 From 5f29988a2cf9263631bf79b758d1f5d3e33dbb80 Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Thu, 10 Mar 2011 14:15:02 -0800 Subject: Add failing test for tag-leaking case. --- src/test/run-pass/leak-tag-copy.rs | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 src/test/run-pass/leak-tag-copy.rs (limited to 'src/test') diff --git a/src/test/run-pass/leak-tag-copy.rs b/src/test/run-pass/leak-tag-copy.rs new file mode 100644 index 00000000..25d87c6e --- /dev/null +++ b/src/test/run-pass/leak-tag-copy.rs @@ -0,0 +1,9 @@ +tag t { + a; + b(@int); +} + +fn main() { + auto x = b(@10); + x = a; +} \ No newline at end of file -- cgit v1.2.3