From d863cdb98fa69e6afb46d87eae212d50d6a63b26 Mon Sep 17 00:00:00 2001 From: Marijn Haverbeke Date: Fri, 1 Jul 2011 15:55:20 +0200 Subject: [PATCH] Add tests for newtype-style tags --- src/test/run-pass/newtype-polymorphic.rs | 16 ++++++++++++++++ src/test/run-pass/newtype.rs | 10 ++++++++++ 2 files changed, 26 insertions(+) create mode 100644 src/test/run-pass/newtype-polymorphic.rs create mode 100644 src/test/run-pass/newtype.rs diff --git a/src/test/run-pass/newtype-polymorphic.rs b/src/test/run-pass/newtype-polymorphic.rs new file mode 100644 index 00000000000..efbcb51fbf4 --- /dev/null +++ b/src/test/run-pass/newtype-polymorphic.rs @@ -0,0 +1,16 @@ +tag myvec[X] = vec[X]; + +fn myvec_deref[X](&myvec[X] mv) -> vec[X] { + ret *mv; +} + +fn myvec_elt[X](&myvec[X] mv) -> X { + ret mv.(0); +} + +fn main() { + auto mv = myvec([1, 2, 3]); + assert(myvec_deref(mv).(1) == 2); + assert(myvec_elt(mv) == 1); + assert(mv.(2) == 3); +} diff --git a/src/test/run-pass/newtype.rs b/src/test/run-pass/newtype.rs new file mode 100644 index 00000000000..7f8cb3bb26d --- /dev/null +++ b/src/test/run-pass/newtype.rs @@ -0,0 +1,10 @@ +tag mytype = rec(fn (&mytype i) -> int compute, int val); + +fn compute(&mytype i) -> int { + ret i.val + 20; +} + +fn main() { + auto myval = mytype(rec(compute=compute, val=30)); + assert(myval.compute(myval) == 50); +}