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:<<"&param&">>");
      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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.