From 25c42264a5d84a099ae778d83dd5ac110577cde6 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Fri, 7 Oct 2016 21:41:09 +0800 Subject: MIR Gen Match - (Simple) support array patterns --- src/mir/from_hir_match.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/mir/from_hir_match.cpp') diff --git a/src/mir/from_hir_match.cpp b/src/mir/from_hir_match.cpp index 2cdcc288..756e5ef5 100644 --- a/src/mir/from_hir_match.cpp +++ b/src/mir/from_hir_match.cpp @@ -557,7 +557,21 @@ int MIR_LowerHIR_Match_Simple__GeneratePattern(MirBuilder& builder, const Span& ), (Array, if( !rule.is_Any() ) { - TODO(sp, "Match over Array"); + unsigned int total = 0; + for( unsigned int i = 0; i < te.size_val; i ++ ) { + unsigned int cnt = MIR_LowerHIR_Match_Simple__GeneratePattern( + builder, sp, + rules, num_rules, *te.inner, + ::MIR::LValue::make_Field({ box$(match_val.clone()), i }), + fail_bb + ); + total += cnt; + rules += cnt; + num_rules -= cnt; + if( num_rules == 0 ) + return total; + } + return total; } return 1; ), -- cgit v1.2.3