aboutsummaryrefslogtreecommitdiff
path: root/pretyping/typeclasses.ml
diff options
context:
space:
mode:
authorPierre-Marie Pédrot2016-02-13 17:36:16 +0100
committerPierre-Marie Pédrot2016-02-13 17:51:34 +0100
commit97e1fccd878190a1fc51a1da45f4c06369c0e3db (patch)
tree27e38c1ae4c8ebef7dc7f8f893ccc8f93aee8227 /pretyping/typeclasses.ml
parente9675e068f9e0e92bab05c030fb4722b146123b8 (diff)
parentf46a5686853353f8de733ae7fbd21a3a61977bc7 (diff)
Merge branch 'v8.5'
Diffstat (limited to 'pretyping/typeclasses.ml')
-rw-r--r--pretyping/typeclasses.ml11
1 files changed, 7 insertions, 4 deletions
diff --git a/pretyping/typeclasses.ml b/pretyping/typeclasses.ml
index 3d6196c352..fc8fab2f99 100644
--- a/pretyping/typeclasses.ml
+++ b/pretyping/typeclasses.ml
@@ -494,15 +494,18 @@ let is_instance = function
let resolvable = Store.field ()
let set_resolvable s b =
- Store.set s resolvable b
+ if b then Store.remove s resolvable
+ else Store.set s resolvable ()
let is_resolvable evi =
assert (match evi.evar_body with Evar_empty -> true | _ -> false);
- Option.default true (Store.get evi.evar_extra resolvable)
+ Option.is_empty (Store.get evi.evar_extra resolvable)
let mark_resolvability_undef b evi =
- let t = Store.set evi.evar_extra resolvable b in
- { evi with evar_extra = t }
+ if is_resolvable evi = b then evi
+ else
+ let t = set_resolvable evi.evar_extra b in
+ { evi with evar_extra = t }
let mark_resolvability b evi =
assert (match evi.evar_body with Evar_empty -> true | _ -> false);