summaryrefslogtreecommitdiff
path: root/src/GF/Infra/ReadFiles.hs
diff options
context:
space:
mode:
authoraarne <unknown>2004-06-10 14:34:07 +0000
committeraarne <unknown>2004-06-10 14:34:07 +0000
commit3522b2a3cd8d01ef1b908c1a717b0592332a5737 (patch)
tree9be8653f1d4be2b4ae5556356fc5af7c391a6bbd /src/GF/Infra/ReadFiles.hs
parentf07087647e12938ac070f82261bd238be56b7c3b (diff)
readfiles
Diffstat (limited to 'src/GF/Infra/ReadFiles.hs')
-rw-r--r--src/GF/Infra/ReadFiles.hs15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/GF/Infra/ReadFiles.hs b/src/GF/Infra/ReadFiles.hs
index 46091c6b5..c4076ba8c 100644
--- a/src/GF/Infra/ReadFiles.hs
+++ b/src/GF/Infra/ReadFiles.hs
@@ -98,7 +98,8 @@ needCompile opts headers sfiles0 = paths $ res $ mark $ iter changed where
let us = uses f in
if not (all noComp us) then
fp else
- if (typ f == MTyIncomplete || (not (null us) && all isAux us)) then
+ if (elem (typ f) [MTyIncomplete, MTyIncResource] ||
+ (not (null us) && all isAux us)) then
(f,(p,CSDont)) else
fp
@@ -124,7 +125,8 @@ needCompile opts headers sfiles0 = paths $ res $ mark $ iter changed where
-- Also read res if the option "retain" is present
res cs = map mkRes cs where
mkRes x@(f,(path,st)) | elem st [CSRead,CSEnv] = case typ f of
- MTyResource | not (null [m | (m,(_,CSComp)) <- cs,
+ t | elem t [MTyResource,MTyIncResource] &&
+ not (null [m | (m,(_,CSComp)) <- cs,
Just ms <- [lookup m allDeps], elem f ms])
|| oElem retainOpers opts
-> (f,(path,CSRes))
@@ -177,6 +179,7 @@ data ModUse =
data ModTyp =
MTyResource
| MTyIncomplete
+ | MTyIncResource -- interface, incomplete resource
| MTyOther
deriving (Eq,Show)
@@ -205,10 +208,12 @@ importsOfFile =
getModuleHeader :: [String] -> ModuleHeader -- with, reuse
getModuleHeader ws = case ws of
- "incomplete":ws2 -> let ((_,name),us) = getModuleHeader ws2 in
- ((MTyIncomplete,name),us)
+ "incomplete":ws2 -> let ((ty,name),us) = getModuleHeader ws2 in
+ case ty of
+ MTyResource -> ((MTyIncResource,name),us)
+ _ -> ((MTyIncomplete,name),us)
"interface":ws2 -> let ((_,name),us) = getModuleHeader ("resource":ws2) in
- ((MTyIncomplete,name),us)
+ ((MTyIncResource,name),us)
"resource":name:ws2 -> case ws2 of
"reuse":m:_ -> ((MTyResource,name),[(m,MUReuse)])