aboutsummaryrefslogtreecommitdiff
path: root/frontend/postparse.icl
diff options
context:
space:
mode:
authorjohnvg2011-04-06 10:12:15 +0000
committerjohnvg2011-04-06 10:12:15 +0000
commitfb3a3d6a01992541475d1b7c47252cfa0197aa25 (patch)
tree3db8e564d89bc4a0cce7891d6220e21a6cf05e03 /frontend/postparse.icl
parentuse type ImportQualified instead of Bool for fields import_qualified and ei_q... (diff)
add qualified import of a module, for functions, macros, constructors, types and classes
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@1901 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/postparse.icl')
-rw-r--r--frontend/postparse.icl56
1 files changed, 31 insertions, 25 deletions
diff --git a/frontend/postparse.icl b/frontend/postparse.icl
index 4c5a9ef..5218737 100644
--- a/frontend/postparse.icl
+++ b/frontend/postparse.icl
@@ -94,13 +94,10 @@ where
addFunctionsRange :: [FunDef] *CollectAdmin -> (IndexRange, *CollectAdmin)
addFunctionsRange fun_defs ca
- # (frm, ca)
- = ca!ca_fun_count
- ca
- = foldSt add_function fun_defs ca
- (to, ca)
- = ca!ca_fun_count
- = ({ir_from = frm, ir_to = to}, ca)
+ # (frm, ca) = ca!ca_fun_count
+ ca = foldSt add_function fun_defs ca
+ (to, ca) = ca!ca_fun_count
+ = ({ir_from = frm, ir_to = to}, ca)
where
add_function :: FunDef !*CollectAdmin -> *CollectAdmin
add_function fun_def ca=:{ca_fun_count, ca_rev_fun_defs}
@@ -964,24 +961,6 @@ makeComprehensions [{tq_generators,tq_let_defs,tq_filter, tq_end, tq_call, tq_lh
, {calt_pattern = PE_WildCard, calt_rhs = exprToRhs default_rhs, calt_position=NoPos}
])
- /* +++ remove code duplication (bug in 2.0 with nested cases)
- case_end :: TransformedGenerator Rhs -> Rhs
- case_end {tg_case1, tg_case_end_expr, tg_case_end_pattern} rhs
- = single_case tg_case1 tg_case_end_expr tg_case_end_pattern rhs
-
- case_pattern :: TransformedGenerator Rhs -> Rhs
- case_pattern {tg_case2, tg_element, tg_pattern} rhs
- = single_case tg_case2 tg_element tg_pattern rhs
-
- */
- /*
- single_case :: Ident ParsedExpr ParsedExpr Rhs -> Rhs
- single_case case_ident expr pattern rhs
- = exprToRhs (PE_Case case_ident expr
- [ {calt_pattern = pattern, calt_rhs = rhs}
- ])
- */
-
transformSequence :: Sequence -> ParsedExpr
transformSequence (SQ_FromThen pd_from_then frm then)
= predef_ident_expr pd_from_then ` frm ` then
@@ -1450,6 +1429,8 @@ reorganiseDefinitions icl_module [PD_Derive derive_defs : defs] cons_count sel_c
#! c_defs = { c_defs & def_generic_cases = derive_defs ++ c_defs.def_generic_cases}
= (fun_defs, c_defs, imports, imported_objects,foreign_exports, ca)
reorganiseDefinitions icl_module [PD_Import new_imports : defs] cons_count sel_count mem_count type_count ca
+ # (new_imports,hash_table) = make_implicit_qualified_imports_explicit new_imports ca.ca_hash_table
+ # ca = {ca & ca_hash_table=hash_table}
# (fun_defs, c_defs, imports, imported_objects,foreign_exports, ca) = reorganiseDefinitions icl_module defs cons_count sel_count mem_count type_count ca
= (fun_defs, c_defs, new_imports ++ imports, imported_objects,foreign_exports, ca)
reorganiseDefinitions icl_module [PD_ImportedObjects new_imported_objects : defs] cons_count sel_count mem_count type_count ca
@@ -1465,6 +1446,31 @@ reorganiseDefinitions icl_module [] _ _ _ _ ca
def_instances = [], def_funtypes = [],
def_generics = [], def_generic_cases = []}, [], [], [], ca)
+make_implicit_qualified_imports_explicit [import_=:{import_qualified=Qualified,import_symbols=[],import_module,import_file_position}:imports] hash_table
+ # (qualified_idents,hash_table) = get_qualified_idents_from_hash_table import_module hash_table
+ # import_declarations = qualified_idents_to_import_declarations qualified_idents
+ # (imports,hash_table) = make_implicit_qualified_imports_explicit imports hash_table
+ = ([{import_ & import_symbols=import_declarations}:imports],hash_table)
+make_implicit_qualified_imports_explicit [import_:imports] hash_table
+ # (imports,hash_table) = make_implicit_qualified_imports_explicit imports hash_table
+ = ([import_:imports],hash_table)
+make_implicit_qualified_imports_explicit [] hash_table
+ = ([],hash_table)
+
+qualified_idents_to_import_declarations (QualifiedIdents ident ident_class qualified_idents)
+ = [qualified_ident_to_import_declaration ident_class ident : qualified_idents_to_import_declarations qualified_idents]
+qualified_idents_to_import_declarations NoQualifiedIdents
+ = []
+
+qualified_ident_to_import_declaration IC_Expression ident
+ = ID_Function ident
+qualified_ident_to_import_declaration IC_Type ident
+ = ID_Type ident No
+qualified_ident_to_import_declaration IC_Class ident
+ = ID_Class ident No
+qualified_ident_to_import_declaration IC_Selector ident
+ = abort "qualified_ident_to_import_declaration IC_Selector not yet implemented"
+
reorganiseDefinitionsAndAddTypes mod_ident support_dynamics icl_module defs ca
| support_dynamics
# clean_types_module_ident