From 5eb53b5bc8d765ed75e965f43f1084e18efc8790 Mon Sep 17 00:00:00 2001 From: Hugo Herbelin Date: Sun, 27 Apr 2014 15:09:04 +0200 Subject: Adding a field ci_cstr_nargs to case_info and mind_consnrealargs to one_inductive_body so that when eta-expanding at "match" printing time we know if a let is part of the expected signature or part of the body. This is an easy fix for bugs like #3293. Another fix could be to enforce, as an invariant, or better syntactically, that "match"/"Case"'s have the body of their branches expanded. --- checker/cic.mli | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'checker/cic.mli') diff --git a/checker/cic.mli b/checker/cic.mli index bfea85327..380093c57 100644 --- a/checker/cic.mli +++ b/checker/cic.mli @@ -60,7 +60,8 @@ type case_printing = type case_info = { ci_ind : inductive; ci_npar : int; - ci_cstr_ndecls : int array; (** number of real args of each constructor *) + ci_cstr_ndecls : int array; (* number of pattern vars of each constructor (with let's)*) + ci_cstr_nargs : int array; (* number of pattern vars of each constructor (w/o let's) *) ci_pp_info : case_printing (** not interpreted by the kernel *) } @@ -241,6 +242,10 @@ type one_inductive_body = { (** Length of the signature of the constructors (with let, w/o params) (not used in the kernel) *) + mind_consnrealargs : int array; + (** Length of the signature of the constructors (w/o let, w/o params) + (not used in the kernel) *) + mind_recargs : wf_paths; (** Signature of recursive arguments in the constructors *) (** {8 Datas for bytecode compilation } *) -- cgit v1.2.3