diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/GF/Infra/Modules.hs | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/GF/Infra/Modules.hs b/src/GF/Infra/Modules.hs index 723cf7f3d..e8f372896 100644 --- a/src/GF/Infra/Modules.hs +++ b/src/GF/Infra/Modules.hs @@ -368,15 +368,16 @@ isCompleteModule :: (Eq i) => Module i f a -> Bool isCompleteModule m = mstatus m == MSComplete && mtype m /= MTInterface --- | all abstract modules +-- | all abstract modules sorted from least to most dependent allAbstracts :: Eq i => MGrammar i f a -> [i] -allAbstracts gr = [i | (i,ModMod m) <- modules gr, mtype m == MTAbstract] +allAbstracts gr = topoSort + [(i,extends m) | (i,ModMod m) <- modules gr, mtype m == MTAbstract] -- | the last abstract in dependency order (head of list) greatestAbstract :: Eq i => MGrammar i f a -> Maybe i greatestAbstract gr = case allAbstracts gr of - [] -> Nothing - a:_ -> return a + [] -> Nothing + as -> return $ last as -- | all resource modules allResources :: MGrammar i f a -> [i] |
