diff options
author | johnvg | 2012-08-14 10:03:06 +0000 |
---|---|---|
committer | johnvg | 2012-08-14 10:03:06 +0000 |
commit | 8f235418ef16fc1341fef9698688c3fdee20b79f (patch) | |
tree | 74da14decf5a0709f3254af5780a740f823a7c32 /backend/backendconvert.icl | |
parent | remove VI_Expression pointer values after copying a case alternative in the f... (diff) |
add extendable algebraic data types (merged from iTask branch)
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@2149 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'backend/backendconvert.icl')
-rw-r--r-- | backend/backendconvert.icl | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/backend/backendconvert.icl b/backend/backendconvert.icl index 6ea31f1..aea02aa 100644 --- a/backend/backendconvert.icl +++ b/backend/backendconvert.icl @@ -819,11 +819,9 @@ convertTypeVar typeVar defineType :: ModuleIndex {#ConsDef} {#SelectorDef} Index CheckedTypeDef *BackEndState -> *BackEndState defineType moduleIndex constructors _ typeIndex {td_ident, td_attribute, td_args, td_rhs=AlgType constructorSymbols} be - # (flatType, be) - = convertTypeLhs moduleIndex typeIndex td_attribute td_args be - # (constructors, be) - = convertConstructors typeIndex td_ident.id_name moduleIndex constructors constructorSymbols be - = appBackEnd (BEAlgebraicType flatType constructors) be + # (flatType, be) = convertTypeLhs moduleIndex typeIndex td_attribute td_args be + # (constructors, be) = convertConstructors typeIndex td_ident.id_name moduleIndex constructors constructorSymbols be + = appBackEnd (BEAlgebraicType flatType constructors) be defineType moduleIndex constructors selectors typeIndex {td_attribute, td_args, td_rhs=RecordType {rt_constructor, rt_fields, rt_is_boxed_record}, td_fun_index} be # constructorIndex = rt_constructor.ds_index constructorDef = constructors.[constructorIndex] @@ -854,6 +852,14 @@ defineType moduleIndex _ _ typeIndex {td_attribute, td_args, td_rhs=AbstractType = beAbsType (convertTypeLhs moduleIndex typeIndex td_attribute td_args) be defineType moduleIndex _ _ typeIndex {td_attribute, td_args, td_rhs=AbstractSynType _ _} be = beAbsType (convertTypeLhs moduleIndex typeIndex td_attribute td_args) be +defineType moduleIndex constructors _ typeIndex {td_ident, td_attribute, td_args, td_rhs=ExtendableAlgType constructorSymbols} be + # (flatType, be) = convertTypeLhs moduleIndex typeIndex td_attribute td_args be + # (constructors, be) = convertConstructors typeIndex td_ident.id_name moduleIndex constructors constructorSymbols be + = appBackEnd (BEExtendableAlgebraicType flatType constructors) be +defineType moduleIndex constructors _ typeIndex {td_ident, td_attribute, td_args, td_rhs=AlgConses constructorSymbols _} be + # (flatType, be) = convertTypeLhs moduleIndex typeIndex td_attribute td_args be + # (constructors, be) = convertConstructors typeIndex td_ident.id_name moduleIndex constructors constructorSymbols be + = appBackEnd (BEExtendableAlgebraicType flatType constructors) be defineType _ _ _ _ _ be = be |