aboutsummaryrefslogtreecommitdiffhomepage
path: root/library/global.ml
diff options
context:
space:
mode:
authorGravatar Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr>2017-07-11 19:29:26 +0200
committerGravatar Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr>2017-07-13 15:14:45 +0200
commit001c95411b6674423886a085d8f624ea031a9ebc (patch)
tree0be049a0094b90c95b7e0aa5a7b1b479c24f421e /library/global.ml
parent8b3978baa5ceb41aaec4d9864c878847b82682d7 (diff)
Safer API for Global.type_of_global_in_context.
We return the abstract context instead of an arbitrary instantiation.
Diffstat (limited to 'library/global.ml')
-rw-r--r--library/global.ml12
1 files changed, 5 insertions, 7 deletions
diff --git a/library/global.ml b/library/global.ml
index e90151bff..cb6334c74 100644
--- a/library/global.ml
+++ b/library/global.ml
@@ -194,26 +194,24 @@ let type_of_global_unsafe r =
let type_of_global_in_context env r =
match r with
- | VarRef id -> Environ.named_type id env, Univ.UContext.empty
+ | VarRef id -> Environ.named_type id env, Univ.AUContext.empty
| ConstRef c ->
let cb = Environ.lookup_constant c env in
let univs = Declareops.constant_polymorphic_context cb in
- let inst = Univ.AUContext.instance univs in
- let univs = Univ.UContext.make (inst, Univ.AUContext.instantiate inst univs) in
+ let env = Environ.push_context ~strict:false (Univ.AUContext.repr univs) env in
Typeops.type_of_constant_type env cb.Declarations.const_type, univs
| IndRef ind ->
let (mib, oib as specif) = Inductive.lookup_mind_specif env ind in
let univs = Declareops.inductive_polymorphic_context mib in
- let inst = Univ.AUContext.instance univs in
- let univs = Univ.UContext.make (inst, Univ.AUContext.instantiate inst univs) in
+ let inst = Univ.make_abstract_instance univs in
+ let env = Environ.push_context ~strict:false (Univ.AUContext.repr univs) env in
Inductive.type_of_inductive env (specif, inst), univs
| ConstructRef cstr ->
let (mib,oib as specif) =
Inductive.lookup_mind_specif env (inductive_of_constructor cstr)
in
let univs = Declareops.inductive_polymorphic_context mib in
- let inst = Univ.AUContext.instance univs in
- let univs = Univ.UContext.make (inst, Univ.AUContext.instantiate inst univs) in
+ let inst = Univ.make_abstract_instance univs in
Inductive.type_of_constructor (cstr,inst) specif, univs
let universes_of_global env r =