From b42bb2cff249862d22c89af09a912fbb0a8d8862 Mon Sep 17 00:00:00 2001 From: Tim Chevalier Date: Sat, 14 May 2011 19:03:08 -0700 Subject: [PATCH] Two tests that the typechecker correctly unifies type arguments in patterns with their expected tag types --- src/test/compile-fail/pattern-tyvar-2.rs | 27 ++++++++++++++++++++++++ src/test/compile-fail/pattern-tyvar.rs | 25 ++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 src/test/compile-fail/pattern-tyvar-2.rs create mode 100644 src/test/compile-fail/pattern-tyvar.rs diff --git a/src/test/compile-fail/pattern-tyvar-2.rs b/src/test/compile-fail/pattern-tyvar-2.rs new file mode 100644 index 000000000000..c83739cbef09 --- /dev/null +++ b/src/test/compile-fail/pattern-tyvar-2.rs @@ -0,0 +1,27 @@ +// -*- rust -*- +// xfail-stage0 + +use std; +import std::option; +import std::option::some; + +// error-pattern: mismatched types + +tag bar { + t1((), option::t[vec[int]]); + t2; +} + +fn foo(bar t) -> int { + alt (t) { + case (t1(_, some(?x))) { + ret (x * 3); + } + case (_) { + fail; + } + } +} + +fn main() { +} \ No newline at end of file diff --git a/src/test/compile-fail/pattern-tyvar.rs b/src/test/compile-fail/pattern-tyvar.rs new file mode 100644 index 000000000000..cb94ee5c173e --- /dev/null +++ b/src/test/compile-fail/pattern-tyvar.rs @@ -0,0 +1,25 @@ +// -*- rust -*- +use std; +import std::option; +import std::option::some; + +// error-pattern: mismatched types + +tag bar { + t1((), option::t[vec[int]]); + t2; +} + +fn foo(bar t) { + alt (t) { + case (t1(_, some[int](?x))) { + log x; + } + case (_) { + fail; + } + } +} + +fn main() { +} \ No newline at end of file