@@ -477,7 +477,9 @@ checkPossible info fc tcgen fname lhs_in
477477 let lhs = addImplPat i lhs_in
478478 -- if the LHS type checks, it is possible
479479 case elaborate ctxt (idris_datatypes i) (sMN 0 "patLHS") infP initEState
480− (erun fc (buildTC i info ELHS [] fname (infTerm lhs))) of
480+ (erun fc (buildTC i info ELHS [] fname
481+ (allNamesIn lhs_in)
482+ (infTerm lhs))) of
481483 OK (ElabResult lhs' _ _ ctxt' newDecls highlights, _) ->
482484 do setContext ctxt'
483485 processTacticDecls info newDecls
@@ -492,19 +494,19 @@ checkPossible info fc tcgen fname lhs_in
492494 recoverableCoverage ctxt err)
493495
494496
495−propagateParams :: IState -> [Name] -> Type -> PTerm -> PTerm
496−propagateParams i ps t tm@(PApp _ (PRef fc hls n) args)
497+propagateParams :: IState -> [Name] -> Type -> [Name] -> PTerm -> PTerm
498+propagateParams i ps t bound tm@(PApp _ (PRef fc hls n) args)
497499 = PApp fc (PRef fc hls n) (addP t args)
498500 where addP (Bind n _ sc) (t : ts)
499501 | Placeholder <- getTm t,
500502 n `elem` ps,
501− not (n `elem` allNamesIn tm)
503+ not (n `elem` bound)
502504 = t { getTm = PRef NoFC [] n } : addP sc ts
503505 addP (Bind n _ sc) (t : ts) = t : addP sc ts
504506 addP _ ts = ts
505−propagateParams i ps t tm@(PApp fc ap args)
506− = PApp fc (propagateParams i ps t ap) args
507−propagateParams i ps t (PRef fc hls n)
507+propagateParams i ps t bound (PApp fc ap args)
508+ = PApp fc (propagateParams i ps t bound ap) args
509+propagateParams i ps t bound (PRef fc hls n)
508510 = case lookupCtxt n (idris_implicits i) of
509511 [is] -> let ps' = filter (isImplicit is) ps in
510512 PApp fc (PRef fc hls n) (map (\x -> pimp x (PRef fc [] x) True) ps')
@@ -512,7 +514,7 @@ propagateParams i ps t (PRef fc hls n)
512514 where isImplicit [] n = False
513515 isImplicit (PImp _ _ _ x _ : is) n | x == n = True
514516 isImplicit (_ : is) n = isImplicit is n
515−propagateParams i ps t x = x
517+propagateParams i ps t bound x = x
516518
517519findUnique :: Context -> Env -> Term -> [Name]
518520findUnique ctxt env (Bind n b sc)
@@ -561,7 +563,7 @@ elabClause info opts (cnum, PClause fc fname lhs_in_as withs rhs_in_as wherebloc
561563 let tcparams = getTCParamsInType i [] fn_is norm_ty
562564
563565 let lhs = mkLHSapp $ stripLinear i $ stripUnmatchable i $
564− propagateParams i params norm_ty (addImplPat i lhs_in)
566+ propagateParams i params norm_ty (allNamesIn lhs_in) (addImplPat i lhs_in)
565567-- let lhs = mkLHSapp $
566568-- propagateParams i params fn_ty (addImplPat i lhs_in)
567569 logLvl 10 (show (params, fn_ty) ++ " " ++ showTmImpls (addImplPat i lhs_in))
@@ -572,7 +574,9 @@ elabClause info opts (cnum, PClause fc fname lhs_in_as withs rhs_in_as wherebloc
572574 ((ElabResult lhs' dlhs [] ctxt' newDecls highlights, probs, inj), _) <-
573575 tclift $ elaborate ctxt (idris_datatypes i) (sMN 0 "patLHS") infP initEState
574576 (do res <- errAt "left hand side of " fname Nothing
575− (erun fc (buildTC i info ELHS opts fname (infTerm lhs)))
577+ (erun fc (buildTC i info ELHS opts fname
578+ (allNamesIn lhs_in)
579+ (infTerm lhs)))
576580 probs <- get_probs
577581 inj <- get_inj
578582 return (res, probs, inj))
@@ -813,12 +817,16 @@ elabClause info opts (_, PWith fc fname lhs_in withs wval_in pn_in withblock)
813817 [t] -> t
814818 _ -> []
815819 let params = getParamsInType i [] fn_is (normalise ctxt [] fn_ty)
816− let lhs = stripLinear i $ stripUnmatchable i $ propagateParams i params fn_ty (addImplPat i lhs_in)
820+ let lhs = stripLinear i $ stripUnmatchable i $
821+ propagateParams i params fn_ty (allNamesIn lhs_in)
822+ (addImplPat i lhs_in)
817823 logLvl 2 ("LHS: " ++ show lhs)
818824 (ElabResult lhs' dlhs [] ctxt' newDecls highlights, _) <-
819825 tclift $ elaborate ctxt (idris_datatypes i) (sMN 0 "patLHS") infP initEState
820826 (errAt "left hand side of with in " fname Nothing
821− (erun fc (buildTC i info ELHS opts fname (infTerm lhs))) )
827+ (erun fc (buildTC i info ELHS opts fname
828+ (allNamesIn lhs_in)
829+ (infTerm lhs))) )
822830 setContext ctxt'
823831 processTacticDecls info newDecls
824832 sendHighlighting highlights