diff options
author | martinw | 2001-01-12 16:25:02 +0000 |
---|---|---|
committer | martinw | 2001-01-12 16:25:02 +0000 |
commit | 18b01b5e638151124207d602d7a751f1f87b50d3 (patch) | |
tree | 09717828c1d0bf51b2cef779f9e12923bee20ab6 /frontend/explicitimports.dcl | |
parent | more node_number=0 statements (diff) |
New algorithm for explicit imports that also works with cyclic module dependencies
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@286 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/explicitimports.dcl')
-rw-r--r-- | frontend/explicitimports.dcl | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/frontend/explicitimports.dcl b/frontend/explicitimports.dcl index 68f9690..0104e79 100644 --- a/frontend/explicitimports.dcl +++ b/frontend/explicitimports.dcl @@ -2,9 +2,20 @@ definition module explicitimports import syntax, checksupport -possiblyFilterExplImportedDecls :: ![ImportDeclaration] u:[w:(.Index,y:Declarations)] Position *{#DclModule} !*CheckState - -> (!v:[x:(Index,z:Declarations)],!.{#DclModule},!.CheckState), [y <= z, w <= x, u <= v] +:: ImportNrAndIdents = + { ini_symbol_nr :: !Index + , ini_belonging :: !Optional [ImportedIdent] + } -checkExplicitImportCompleteness :: !Int ![ExplicitImport] !*{#DclModule} !*{#FunDef} !*ExpressionHeap !*CheckState +:: SolvedImports = + { si_explicit :: ![([Declaration], Position)] + , si_implicit :: ![(Index, Position)] // module indices + } + + +solveExplicitImports :: !(IntKeyHashtable [(Int,Position,[ImportNrAndIdents])]) !{#Int} !Index + !*(!{#x:DclModule},!*{#Int},!{!*ExplImpInfo},!*CheckState) + -> (!.SolvedImports,!(!{#x:DclModule},!.{#Int},!{!.ExplImpInfo},!.CheckState)) +checkExplicitImportCompleteness :: ![(Declaration, Position)] !*{#DclModule} !*{#FunDef} !*ExpressionHeap !*CheckState -> (!.{#DclModule},!.{#FunDef},!.ExpressionHeap,!.CheckState) |