@@ -18,7 +18,7 @@ import Idris.Core.Unify
18import Idris.Core.ProofTerm (getProofTerm)
18import Idris.Core.ProofTerm (getProofTerm)
19import Idris.Core.Typecheck (check, recheck, converts, isType)
19import Idris.Core.Typecheck (check, recheck, converts, isType)
20import Idris.Core.WHNF (whnf)
20import Idris.Core.WHNF (whnf)
21−import Idris.Coverage (buildSCG, checkDeclTotality, genClauses, recoverableCoverage, validCoverageCase)
21+import Idris.Coverage (buildSCG, checkDeclTotality, checkPositive, genClauses, recoverableCoverage, validCoverageCase)
22import Idris.ErrReverse (errReverse)
22import Idris.ErrReverse (errReverse)
23import Idris.Elab.Quasiquote (extractUnquotes)
23import Idris.Elab.Quasiquote (extractUnquotes)
24import Idris.Elab.Utils
24import Idris.Elab.Utils
@@ -2647,7 +2647,13 @@ processTacticDecls info steps =
2647 do updateIState $ \i -> i { idris_implicits = addDef cn impls (idris_implicits i) }
2647 do updateIState $ \i -> i { idris_implicits = addDef cn impls (idris_implicits i) }
2648 addIBC (IBCImp cn)
2648 addIBC (IBCImp cn)
2650+ for_ ctors $ \(ctorN, _, _) ->
2650− for_ ctors $ \(cn, _, _) -> totcheck (NoFC, cn)
2651+ do totcheck (NoFC, ctorN)
2652+ ctxt <- tt_ctxt <$> getIState
2653+ case lookupTyExact ctorN ctxt of
2654+ Just cty -> do checkPositive (tyn : map cn ctors) (ctorN, cty)
2656+ Nothing -> return ()
2652 case ctors of
2658 case ctors of
2653 [ctor] -> do setDetaggable (cn ctor); setDetaggable tyn
2659 [ctor] -> do setDetaggable (cn ctor); setDetaggable tyn