From 675b7378985f1958412c3c733f6dad8e20ab97f3 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Wed, 2 Aug 2023 10:40:59 +0200 Subject: [PATCH] Check exhaustiveness behavior on pattern guards. --- crates/aiken-lang/src/tests/check.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/crates/aiken-lang/src/tests/check.rs b/crates/aiken-lang/src/tests/check.rs index 99c6acfc..0dcf174e 100644 --- a/crates/aiken-lang/src/tests/check.rs +++ b/crates/aiken-lang/src/tests/check.rs @@ -611,6 +611,30 @@ fn exhaustiveness_nested_list_and_tuples() { assert!(matches!(check(parse(source_code)), Ok(_))) } +#[test] +fn exhaustiveness_guard() { + let source_code = r#" + fn foo() { + when [(True, 42)] is { + [(True, x), ..] if x == 42 -> Void + [(False, x), ..] -> Void + [] -> Void + } + } + "#; + + assert!(matches!( + check(parse(source_code)), + Err(( + _, + Error::NotExhaustivePatternMatch { + unmatched, + .. + } + )) if unmatched[0] == "[(True, _), ..]" + )); +} + #[test] fn expect_sugar_correct_type() { let source_code = r#"