diff options
| author | Gaëtan Gilbert | 2019-12-30 16:57:27 +0100 |
|---|---|---|
| committer | Gaëtan Gilbert | 2020-01-07 10:15:45 +0100 |
| commit | e1da46b1141e1fc9ce04f2285fbb50fe3aab18b7 (patch) | |
| tree | 1cd34581914296ac42aaf9d44d73754be1926940 /kernel/indtypes.ml | |
| parent | 1220aab80893b68c14adb64ba0b75811961ac04d (diff) | |
cleanup: do not use recargs when computing the reloc table for ctors
This doesn't actually have anything to do with positivity AFAICT, we
just want the number of non-parameter arguments.
Diffstat (limited to 'kernel/indtypes.ml')
| -rw-r--r-- | kernel/indtypes.ml | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/kernel/indtypes.ml b/kernel/indtypes.ml index ab915e2b8d..0d900c2ec9 100644 --- a/kernel/indtypes.ml +++ b/kernel/indtypes.ml @@ -487,18 +487,17 @@ let build_inductive env names prv univs variance paramsctxt kn isrecord isfinite in (* Assigning VM tags to constructors *) let nconst, nblock = ref 0, ref 0 in - let transf num = - let arity = List.length (dest_subterms recarg).(num) in - if Int.equal arity 0 then - let p = (!nconst, 0) in - incr nconst; p - else - let p = (!nblock + 1, arity) in - incr nblock; p - (* les tag des constructeur constant commence a 0, - les tag des constructeur non constant a 1 (0 => accumulator) *) + let transf arity = + if Int.equal arity 0 then + let p = (!nconst, 0) in + incr nconst; p + else + let p = (!nblock + 1, arity) in + incr nblock; p + (* les tag des constructeur constant commence a 0, + les tag des constructeur non constant a 1 (0 => accumulator) *) in - let rtbl = Array.init (List.length cnames) transf in + let rtbl = Array.map transf consnrealargs in (* Build the inductive packet *) { mind_typename = id; mind_arity = arity; |
