diff options
| author | Maxime Dénès | 2018-06-05 23:12:47 +0200 |
|---|---|---|
| committer | Maxime Dénès | 2018-06-05 23:12:47 +0200 |
| commit | af902fa028f8ceb152d9add198e7dd490a4394ca (patch) | |
| tree | 002f7dde0d60cf865d5e643204827eee132299ee /kernel/nativelambda.ml | |
| parent | 1c67e29e735ab1e7bb121304f710ef48a23a8b9b (diff) | |
| parent | e1e7888ac4519f4b7470cc8469f9fd924514e352 (diff) | |
Merge PR #7679: Clean native compilation of primitive projections
Diffstat (limited to 'kernel/nativelambda.ml')
| -rw-r--r-- | kernel/nativelambda.ml | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/kernel/nativelambda.ml b/kernel/nativelambda.ml index 6db75c89ae..0325a00b47 100644 --- a/kernel/nativelambda.ml +++ b/kernel/nativelambda.ml @@ -519,8 +519,11 @@ let rec lambda_of_constr env sigma c = | Construct _ -> lambda_of_app env sigma c empty_args | Proj (p, c) -> - let kn = Projection.constant p in - mkLapp (Lproj (get_const_prefix !global_env kn, kn)) [|lambda_of_constr env sigma c|] + let pb = lookup_projection p !global_env in + (** FIXME: handle mutual records *) + let ind = (pb.proj_ind, 0) in + let prefix = get_mind_prefix !global_env (fst ind) in + mkLapp (Lproj (prefix, ind, pb.proj_arg)) [|lambda_of_constr env sigma c|] | Case(ci,t,a,branches) -> let (mind,i as ind) = ci.ci_ind in |
