diff options
Diffstat (limited to 'backend/backendpreprocess.icl')
-rw-r--r-- | backend/backendpreprocess.icl | 32 |
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 |