subtilité Ada ou bug GNAT ?
Hugues Bonnin <[email protected]>
| Newsgroups | gmane.comp.lang.ada.france |
|---|---|
| Message-ID | <227681.11671191294266064288.JavaMail.root@spooler2-g27.priv.proxad.net> |
bonjour,
je ronge un petit os depuis quelques jours, et n'arrive pas à savoir si le problème rencontré est une subtilité du langage qui m'échappe ou bel et bien un bug du compilo (GNAT GPL, dernière version).
Le petit programme suivant :
----------------------------------------------
with Ada.Text_IO;
procedure Yauntruc is
subtype T1 is String;
subtype T2 is T1(1..10);
function F (param : T1) return T2 is
begin
Ada.Text_IO.Put_Line("in F:<<"¶m&">>");
return param;
end F;
V : T2 := (others=>'x'); -- meme resultat avec V de type T1
begin
Ada.Text_IO.Put_Line("AVANT F:<<"&V&">>");
V := F(V) ;
Ada.Text_IO.Put_Line("APRES F:<<"&V&">>");
end Yauntruc;
----------------------------------------------
produit le résultat suivant :
AVANT F:<<xxxxxxxxxx>>
in F:<< >>
APRES F:<< >>
ce qui est étonnant au vu de la fonction F censée être l'identité.
Tout semble venir de la différence de sous-type T1 et T2 et de l'identité entre le paramètre réel param et le paramètre de retour de F.
Si une bonne âme veut bien m'expliquer, je lui serai très reconnaissant...
Merci et...
MEILLEURS VOEUX 2011 A TOUS LES LECTEURS DE CETTE LISTE !
Hugues Bonnin.
_______________________________________________
Site WWW de l'association Ada-France: http://www.ada-france.org/
[email protected]
http://www.ada-france.org/mailman/listinfo/ada-france