@@ -37,7 +37,7 @@ import Agda.Utils.Size ( Sized(size) )
3737
3838import Agda2Hs.AgdaUtils
3939import Agda2Hs.Compile.Name ( compileQName )
40- import Agda2Hs.Compile.Term ( compileTerm , usableDom )
40+ import Agda2Hs.Compile.Term ( compileTerm , usableDom , dependentDom )
4141import Agda2Hs.Compile.Type ( compileType , compileDom , DomOutput (.. ), compileDomType )
4242import Agda2Hs.Compile.TypeDefinition ( compileTypeDef )
4343import Agda2Hs.Compile.Types
@@ -194,7 +194,7 @@ compileClause' curModule pars projName x ty c = do
194194 -- Check whether any parameters (including module parameters) are forced
195195 -- See https://github.com/agda/agda2hs/issues/306
196196 annPats <- annPats ty (namedClausePats c)
197- traverse (uncurry checkNonErasedForced ) annPats
197+ traverse (uncurry checkIllegalForced ) annPats
198198 ty' <- piApplyM ty pars
199199 compileClause'' curModule projName x ty' (c `apply` pars)
200200
@@ -259,10 +259,11 @@ keepClause c@Clause{..} = case (clauseBody, clauseType) of
259259 DOType -> __IMPOSSIBLE__
260260 DOTerm -> True
261261
262- checkNonErasedForced :: Dom Type -> DeBruijnPattern -> C ()
263- checkNonErasedForced a pat
264- = when (usableDom a && isForcedPat pat)
265- $ agda2hsError " not supported: forced (dot) patterns in non-erased positions"
262+ checkIllegalForced :: Dom Type -> DeBruijnPattern -> C ()
263+ checkIllegalForced a pat = do
264+ dep <- dependentDom a
265+ when (dep && isForcedPat pat) $ agda2hsError
266+ " not supported: forced (dot) patterns in non-erased positions"
266267
267268annPats :: Type -> NAPs -> C [(Dom Type , DeBruijnPattern )]
268269annPats ty [] = pure []
0 commit comments