From 151246e1c56cb5056669ec3a03501d90ebc93733 Mon Sep 17 00:00:00 2001 From: greg Date: Mon, 5 Nov 2018 14:11:49 -0800 Subject: [PATCH] Test for pattern-matching --- schala-lang/language/src/eval.rs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/schala-lang/language/src/eval.rs b/schala-lang/language/src/eval.rs index a10e538..d0e5a34 100644 --- a/schala-lang/language/src/eval.rs +++ b/schala-lang/language/src/eval.rs @@ -696,4 +696,35 @@ if (1, 5) { "#; test_in_fresh_env!(source, 5); } + + #[test] + fn prim_obj_pattern() { + let source = r#" +type Stuff = Mulch(Nat) | Jugs(Nat, String) | Mardok +let a = Mulch(20) +let b = Jugs(1, "haha") +let c = Mardok + +let x = if a { + is Mulch(20) -> "x", + is _ -> "ERR" +} + +let y = if b { + is Mulch(n) -> "ERR", + is Jugs(2, _) -> "ERR", + is Jugs(1, s) -> s, + is _ -> "ERR", +} + +let z = if c { + is Jugs(_, _) -> "ERR", + is Mardok -> "NIGH", + is _ -> "ERR", +} + +(x, y, z) +"#; + test_in_fresh_env!(source, r#"("x", "haha", "NIGH")"#); + } }