summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/GF/Speech/SRG.hs6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/GF/Speech/SRG.hs b/src/GF/Speech/SRG.hs
index 0334c1301..8080b941f 100644
--- a/src/GF/Speech/SRG.hs
+++ b/src/GF/Speech/SRG.hs
@@ -140,7 +140,11 @@ topDownFilter srg@(SRG { startCat = start, rules = rs }) = srg { rules = rs' }
rhsCats = [ (c,c') | r@(SRGRule c _ ps) <- rs,
SRGAlt _ _ ss <- ps,
c' <- filterCats ss]
- keep = allRelated (transitiveClosure $ mkRel rhsCats) start
+ uses = reflexiveClosure_ (allSRGCats srg) $ transitiveClosure $ mkRel rhsCats
+ keep = allRelated uses start
+
+allSRGCats :: SRG -> [String]
+allSRGCats SRG { rules = rs } = [c | SRGRule c _ _ <- rs]
--
-- * Utilities for building and printing SRGs