on master help sign in
Strip impossible cases when building case trees
commitedfe5b3cddeb9ffb5dca67e04d89e5010bab5f31 authorEdwin Brady <ecb10@st-andrews.ac.uk> dateSun 17 Mar 2013, 11:10 (14 years ago) parent42fc6d2
1 file changed+8−2
src/Core/CaseTree.hs+8−2
src/Core/CaseTree.hs+8−2
@@ -167,9 +167,15 @@ data Phase = CompileTime | RunTime
167167
168168simpleCase :: Bool -> Bool -> Phase -> FC -> [([Name], Term, Term)] ->
169169 TC CaseDef
170−simpleCase tc cover phase fc []
170+simpleCase tc cover phase fc cs
171+ = sc' tc cover phase fc (filter (\(_, _, r) ->
172+ case r of
173+ Impossible -> False
174+ _ -> True) cs)
175+ where
176+ sc' tc cover phase fc []
171177 = return $ CaseDef [] (UnmatchedCase "No pattern clauses") []
172−simpleCase tc cover phase fc cs
178+ sc' tc cover phase fc cs
173179 = let proj = phase == RunTime
174180 pats = map (\ (avs, l, r) ->
175181 (avs, toPats tc l, (l, r))) cs