summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/GF/Compile/Rebuild.hs10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/GF/Compile/Rebuild.hs b/src/GF/Compile/Rebuild.hs
index 52224c4a1..06f4b663e 100644
--- a/src/GF/Compile/Rebuild.hs
+++ b/src/GF/Compile/Rebuild.hs
@@ -49,13 +49,11 @@ rebuildModule ms mo@(i,mi) = do
--- to avoid double inclusions, in instance I of I0 = J0 ** ...
case extends m of
[] -> return $ replaceJudgements m js'
- j0:jj -> do
- m0 <- lookupModMod gr j0
- let notInM0 c _ = not $ isInBinTree c $ jments m0
+ j0s -> do
+ m0s <- mapM (lookupModMod gr) j0s
+ let notInM0 c _ = all (not . isInBinTree c . jments) m0s
let js2 = filterBinTree notInM0 js'
- if null jj
- then return $ replaceJudgements m js2
- else Bad "FIXME: handle multiple inheritance in instance"
+ return $ replaceJudgements m js2
return $ ModMod m'
_ -> return mi