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