Date: Mon, 2 Aug 1999 11:39:14 +0200 (MET DST)
From: Nicolas Ollinger <nollinge@ens-lyon.fr>
To: Jean-Yves Moyen <guest10@diku.dk>
Subject: Re: probleme dans les modules - contraintes (fwd)
In-Reply-To: <Pine.HPP.3.95.990802112827.10313A-100000@freja.diku.dk>
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.
--
This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:24 MET