From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id MAA06566 for caml-redistribution; Thu, 12 Aug 1999 12:05:05 +0200 (MET DST) Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id LAA03632 for ; Mon, 2 Aug 1999 11:39:18 +0200 (MET DST) Received: from buffalo.ens-lyon.fr (buffalo.ens-lyon.fr [140.77.1.8]) by nez-perce.inria.fr (8.8.7/8.8.7) with ESMTP id LAA13696 for ; Mon, 2 Aug 1999 11:39:15 +0200 (MET DST) Received: from woodstock (woodstock [140.77.11.50]) by buffalo.ens-lyon.fr (8.9.1a/8.9.1) with ESMTP id LAA26807; Mon, 2 Aug 1999 11:39:03 +0200 (MET DST) Date: Mon, 2 Aug 1999 11:39:14 +0200 (MET DST) From: Nicolas Ollinger X-Sender: nollinge@woodstock To: Jean-Yves Moyen cc: caml-list@inria.fr Subject: Re: probleme dans les modules - contraintes (fwd) In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: weis On Mon, 2 Aug 1999, Jean-Yves Moyen wrote: (snip) > provoque a la compilation l'erreur "This module type is not a signature" > sur la chaine "Toto". (Je n'ai pas trouve la description de cette erreur > dans le refman, ni dans les FAQ) (snip) > et apparamment, au vu de la grammaire telle qu'indiquee dans le refman, > les 3 versions devraient passer. > A quoi est du le probleme, et comment faire pour le corriger ? En effet, cela ressemble fortement a un bug. Apres avoir regarde un peu le source, le probleme survient dans Typemod.extract_sig. Cette fonction appelle Mtype.scrape qui remplace Toto par Titi si on a fait la declaration : module type Toto = Titi;; Or, extract_sig s'attend a recevoir une signature et non un nom de module... Voici un petit patch rapide... comme je ne connais pas les details du compilateur il y a peut-etre des effets de bord indesirables... dans ocaml-2.02/typing/mtype.ml remplacer scrape par : let rec scrape env mty = match mty with Tmty_ident p -> begin try match Env.find_modtype_expansion p env with Tmty_ident p -> scrape env (Tmty_ident p) | mty -> mty with Not_found -> mty end | _ -> mty J'ai verifie que ca compile... pas que ca marche... :) Nb: apparement ca a avait ete prevu car scrape est definie deja recursive... Nicolas. --