aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsacerdot2004-11-18 17:31:41 +0000
committersacerdot2004-11-18 17:31:41 +0000
commit7326d3fd7ba13dcf815e11dcdde1bd81257bdfce (patch)
tree51ce5b6de6a63b3e16699e9014b961bf863437ea
parent1694cc318a22b3b523c6ab645f3c51fcdeb1998b (diff)
When a reference to a constructor is met its inductive type must be closed.
This commit fixes the bug that prevented extraction of Lyon/CIRCUITS. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@6328 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--contrib/extraction/extract_env.ml9
1 files changed, 8 insertions, 1 deletions
diff --git a/contrib/extraction/extract_env.ml b/contrib/extraction/extract_env.ml
index 8c75f2df5c..04a23919b5 100644
--- a/contrib/extraction/extract_env.ml
+++ b/contrib/extraction/extract_env.ml
@@ -62,7 +62,14 @@ let in_mp v mp = MPset.mem mp v.mp
let visit_mp v mp = v.mp <- MPset.union (prefixes_mp mp) v.mp
let visit_kn v kn = v.kn <- KNset.add kn v.kn; visit_mp v (modpath kn)
-let visit_ref v r = v.ref <- Refset.add r v.ref; visit_mp v (modpath_of_r r)
+let visit_ref v r =
+ let r =
+ (* if we meet a constructor we must export the inductive definition *)
+ match r with
+ ConstructRef (r,_) -> IndRef r
+ | _ -> r
+ in
+ v.ref <- Refset.add r v.ref; visit_mp v (modpath_of_r r)
exception Impossible