diff options
| author | Pierre-Marie Pédrot | 2016-02-13 17:36:16 +0100 |
|---|---|---|
| committer | Pierre-Marie Pédrot | 2016-02-13 17:51:34 +0100 |
| commit | 97e1fccd878190a1fc51a1da45f4c06369c0e3db (patch) | |
| tree | 27e38c1ae4c8ebef7dc7f8f893ccc8f93aee8227 /pretyping/typeclasses.ml | |
| parent | e9675e068f9e0e92bab05c030fb4722b146123b8 (diff) | |
| parent | f46a5686853353f8de733ae7fbd21a3a61977bc7 (diff) | |
Merge branch 'v8.5'
Diffstat (limited to 'pretyping/typeclasses.ml')
| -rw-r--r-- | pretyping/typeclasses.ml | 11 |
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); |
