aboutsummaryrefslogtreecommitdiff
path: root/backend/backendpreprocess.icl
diff options
context:
space:
mode:
Diffstat (limited to 'backend/backendpreprocess.icl')
-rw-r--r--backend/backendpreprocess.icl32
1 files changed, 32 insertions, 0 deletions
diff --git a/backend/backendpreprocess.icl b/backend/backendpreprocess.icl
index 8b0dd8c..6000de6 100644
--- a/backend/backendpreprocess.icl
+++ b/backend/backendpreprocess.icl
@@ -72,9 +72,18 @@ instance sequence (Optional a) | sequence a where
instance sequence FunctionBody where
sequence (BackendBody backEndBodies)
= sequence backEndBodies
+ sequence (TransformedBody transformedBody)
+ = sequence transformedBody
sequence body
= abort "preprocess (FunctionBody): unknown body" <<- body
+// case test ...
+instance sequence TransformedBody where
+ sequence body
+ = sequence body.tb_args
+ o` sequence body.tb_rhs
+// ... case test
+
instance sequence BackendBody where
sequence body
= sequence body.bb_args
@@ -102,9 +111,32 @@ instance sequence Expression where
o` sequence selections
sequence (AnyCodeExpr _ outParams _)
= foldState (\{bind_dst}->sequence bind_dst) outParams
+ sequence (Case caseExpr)
+ = sequence caseExpr
sequence _
= identity
+instance sequence Case where
+ sequence {case_expr, case_guards, case_default}
+ = sequence case_expr
+ o` sequence case_guards
+ o` sequence case_default
+
+instance sequence CasePatterns where
+ sequence (AlgebraicPatterns _ patterns)
+ = sequence patterns
+ sequence (BasicPatterns _ patterns)
+ = sequence patterns
+
+instance sequence AlgebraicPattern where
+ sequence {ap_vars, ap_expr}
+ = sequence ap_vars
+ o` sequence ap_expr
+
+instance sequence BasicPattern where
+ sequence {bp_expr}
+ = sequence bp_expr
+
instance sequence Selection where
sequence (RecordSelection _ _)
= identity