aboutsummaryrefslogtreecommitdiff
path: root/frontend/transform.icl
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/transform.icl')
-rw-r--r--frontend/transform.icl26
1 files changed, 21 insertions, 5 deletions
diff --git a/frontend/transform.icl b/frontend/transform.icl
index 5dc7c7c..ce9d7ab 100644
--- a/frontend/transform.icl
+++ b/frontend/transform.icl
@@ -172,6 +172,9 @@ where
# (patterns, ls) = lift patterns ls
# (decons_expr, ls) = lift decons_expr ls
= (OverloadedListPatterns type decons_expr patterns, ls)
+ lift (NewTypePatterns type patterns) ls
+ # (patterns, ls) = lift patterns ls
+ = (NewTypePatterns type patterns, ls)
lift (DynamicPatterns patterns) ls
# (patterns, ls) = lift patterns ls
= (DynamicPatterns patterns, ls)
@@ -689,6 +692,9 @@ where
# (patterns, us) = unfold patterns ui us
# (decons_expr, us) = unfold decons_expr ui us
= (OverloadedListPatterns type decons_expr patterns, us)
+ unfold (NewTypePatterns type patterns) ui us
+ # (patterns, us) = unfold patterns ui us
+ = (NewTypePatterns type patterns, us)
unfold (DynamicPatterns patterns) ui us
# (patterns, us) = unfold patterns ui us
= (DynamicPatterns patterns, us)
@@ -1202,11 +1208,6 @@ where
where
has_no_curried_macro_CasePatterns (AlgebraicPatterns type patterns)
= has_no_curried_macro_AlgebraicPatterns patterns
- where
- has_no_curried_macro_AlgebraicPatterns [{ap_expr}:patterns]
- = has_no_curried_macro_Expression ap_expr && has_no_curried_macro_AlgebraicPatterns patterns
- has_no_curried_macro_AlgebraicPatterns []
- = True
has_no_curried_macro_CasePatterns (BasicPatterns type patterns)
= has_no_curried_macro_BasicPatterns patterns
where
@@ -1214,6 +1215,8 @@ where
= has_no_curried_macro_Expression bp_expr && has_no_curried_macro_BasicPatterns patterns
has_no_curried_macro_BasicPatterns []
= True
+ has_no_curried_macro_CasePatterns (NewTypePatterns type patterns)
+ = has_no_curried_macro_AlgebraicPatterns patterns
has_no_curried_macro_CasePatterns (DynamicPatterns patterns)
= has_no_curried_macro_DynamicPatterns patterns
where
@@ -1222,6 +1225,11 @@ where
has_no_curried_macro_DynamicPatterns []
= True
+ has_no_curried_macro_AlgebraicPatterns [{ap_expr}:patterns]
+ = has_no_curried_macro_Expression ap_expr && has_no_curried_macro_AlgebraicPatterns patterns
+ has_no_curried_macro_AlgebraicPatterns []
+ = True
+
has_no_curried_macro_OptionalExpression (Yes expr)
= has_no_curried_macro_Expression expr
has_no_curried_macro_OptionalExpression No
@@ -1670,6 +1678,8 @@ where
= [BasicPatterns basicType [pattern] \\ pattern <- patterns]
split_patterns (OverloadedListPatterns overloaded_list_type decons_expr patterns)
= [OverloadedListPatterns overloaded_list_type decons_expr [pattern] \\ pattern <- patterns]
+ split_patterns (NewTypePatterns index patterns)
+ = [NewTypePatterns index [pattern] \\ pattern <- patterns]
split_patterns (DynamicPatterns patterns)
= [DynamicPatterns [pattern] \\ pattern <- patterns]
split_patterns NoPattern
@@ -1700,6 +1710,9 @@ where
expand (OverloadedListPatterns type decons_expr patterns) ei
# (patterns, ei) = expand patterns ei
= (OverloadedListPatterns type decons_expr patterns, ei)
+ expand (NewTypePatterns type patterns) ei
+ # (patterns, ei) = expand patterns ei
+ = (NewTypePatterns type patterns, ei)
expand (DynamicPatterns patterns) ei
# (patterns, ei) = expand patterns ei
= (DynamicPatterns patterns, ei)
@@ -2088,6 +2101,9 @@ where
collectVariables (OverloadedListPatterns type decons_expr patterns) free_vars dynamics cos
# (patterns, free_vars, dynamics, cos) = collectVariables patterns free_vars dynamics cos
= (OverloadedListPatterns type decons_expr patterns, free_vars, dynamics, cos)
+ collectVariables (NewTypePatterns type patterns) free_vars dynamics cos
+ # (patterns, free_vars, dynamics, cos) = collectVariables patterns free_vars dynamics cos
+ = (NewTypePatterns type patterns, free_vars, dynamics, cos)
collectVariables (DynamicPatterns patterns) free_vars dynamics cos
# (patterns, free_vars, dynamics, cos) = collectVariables patterns free_vars dynamics cos
= (DynamicPatterns patterns, free_vars, dynamics, cos)