diff options
author | johnvg | 2007-02-14 13:18:39 +0000 |
---|---|---|
committer | johnvg | 2007-02-14 13:18:39 +0000 |
commit | 8b59654a1bf1e661ba6c2d6729ed11b307efbbed (patch) | |
tree | 322af14a86221be5c439c05a8983942a21e147df /frontend/explicitimports.dcl | |
parent | add space before and after @ (diff) |
implement qualified explicit imports
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@1649 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/explicitimports.dcl')
-rw-r--r-- | frontend/explicitimports.dcl | 35 |
1 files changed, 29 insertions, 6 deletions
diff --git a/frontend/explicitimports.dcl b/frontend/explicitimports.dcl index 4d4483c..5eec130 100644 --- a/frontend/explicitimports.dcl +++ b/frontend/explicitimports.dcl @@ -7,11 +7,18 @@ import syntax, checksupport , ini_imp_decl :: !ImportDeclaration } -:: SolvedImports = - { si_explicit :: ![([Declaration], Position)] - , si_implicit :: ![(Index, Position)] // module indices +:: ExplicitImport = ! { + ei_module_n :: !Int, + ei_position :: !Position, + ei_symbols :: ![ImportNrAndIdents], + ei_qualified:: !Bool } +:: SolvedImports = + { si_explicit :: ![([Declaration], Position)] + , si_qualified_explicit :: ![([Declaration], ModuleN, Position)] + , si_implicit :: ![(ModuleN, Position)] + } markExplImpSymbols :: !Int !*(!*{!*{!u:ExplImpInfo}}, !*SymbolTable) -> (!.[Ident],!(!{!{!u:ExplImpInfo}},!.SymbolTable)) @@ -19,10 +26,26 @@ markExplImpSymbols :: !Int !*(!*{!*{!u:ExplImpInfo}}, !*SymbolTable) updateExplImpForMarkedSymbol :: !Index !Declaration !SymbolTableEntry !u:{#DclModule} !{!{!*ExplImpInfo}} !*SymbolTable -> (!u:{#DclModule}, !{!{!.ExplImpInfo}}, !.SymbolTable) -solveExplicitImports :: !(IntKeyHashtable [(Int,Position,[ImportNrAndIdents])]) !{#Int} !Index +solveExplicitImports :: !(IntKeyHashtable [ExplicitImport]) !{#Int} !Index !*(!v:{#DclModule},!*{#Int},!{!*ExplImpInfo},!*CheckState) -> (!.SolvedImports,! (!v:{#DclModule},!.{#Int},!{!.ExplImpInfo},!.CheckState)) -checkExplicitImportCompleteness :: ![([Declaration], Position)] !*{#DclModule} !*{#FunDef} !*{#*{#FunDef}} !*ExpressionHeap !*CheckState - -> (!.{#DclModule},!.{#FunDef},!*{#*{#FunDef}},!.ExpressionHeap,!.CheckState) +checkExplicitImportCompleteness :: ![([Declaration], Position)] ![([Declaration], Int, Position)] + !*{#DclModule} !*{#FunDef} !*{#*{#FunDef}} !*ExpressionHeap !*CheckState + -> (!.{#DclModule},!.{#FunDef},!*{#*{#FunDef}},!.ExpressionHeap,!.CheckState) + +store_qualified_explicit_imports_in_symbol_table :: ![([Declaration],Int,Position)] ![(SymbolPtr,STE_Kind)] !*SymbolTable *{#DclModule} -> (![(SymbolPtr,STE_Kind)],!*SymbolTable,!*{#DclModule}) + +:: NameSpaceN:==Int + +ExpressionNameSpaceN:==0 +TypeNameSpaceN:==1 +ClassNameSpaceN:==2 +FieldNameSpaceN:==3 +OtherNameSpaceN:==4 + +search_qualified_ident :: !Ident {#Char} !NameSpaceN !*CheckState -> (!Bool,!DeclarationRecord,!*CheckState) +search_qualified_import :: !String !SortedQualifiedImports !NameSpaceN -> (!Bool,!DeclarationRecord) +search_qualified_imports :: !String !SortedQualifiedImports !NameSpaceN -> [DeclarationRecord] +restore_module_ste_kinds_in_symbol_table :: ![(SymbolPtr,STE_Kind)] !*SymbolTable -> *SymbolTable |