@@ -16,11 +16,12 @@ import Idris.Core.Evaluate
1616-- indexed with 'finalise'
1717
1818convertsC :: Context -> Env -> Term -> Term -> StateT UCs TC ()
19−convertsC ctxt env x y
20− = do c1 <- convEq ctxt x y
19+convertsC ctxt env x y =
20+ do let hs = map fst (filter isHole env)
21+ c1 <- convEq ctxt hs x y
2122 if c1 then return ()
2223 else
23− do c2 <- convEq ctxt (finalise (normalise ctxt env x))
24+ do c2 <- convEq ctxt hs (finalise (normalise ctxt env x))
2425 (finalise (normalise ctxt env y))
2526 if c2 then return ()
2627 else lift $ tfail (CantConvert
@@ -29,15 +30,19 @@ convertsC ctxt env x y
2930
3031converts :: Context -> Env -> Term -> Term -> TC ()
3132converts ctxt env x y
32− = case convEq' ctxt x y of
33+ = let hs = map fst (filter isHole env) in
34+ case convEq' ctxt hs x y of
3335 OK True -> return ()
34− _ -> case convEq' ctxt (finalise (normalise ctxt env x))
35− (finalise (normalise ctxt env y)) of
36+ _ -> case convEq' ctxt hs (finalise (normalise ctxt env x))
37+ (finalise (normalise ctxt env y)) of
3638 OK True -> return ()
3739 _ -> tfail (CantConvert
3840 (finalise (normalise ctxt env x))
3941 (finalise (normalise ctxt env y)) (errEnv env))
4042
43+isHole (n, Hole _) = True
44+isHole _ = False
45+
4146errEnv = map (\(x, b) -> (x, binderTy b))
4247
4348isType :: Context -> Env -> Term -> TC ()