aboutsummaryrefslogtreecommitdiff
path: root/frontend/explicitimports.dcl
diff options
context:
space:
mode:
authorjohnvg2007-02-14 13:18:39 +0000
committerjohnvg2007-02-14 13:18:39 +0000
commit8b59654a1bf1e661ba6c2d6729ed11b307efbbed (patch)
tree322af14a86221be5c439c05a8983942a21e147df /frontend/explicitimports.dcl
parentadd 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.dcl35
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