Le 26/01/2017 à 13:59, Frédéric PRACA a écrit :
> pourquoi le compilateur Gnat ne fournit-il qu'un warning et pas une
> erreur de compilation lorsque l'on référence un composant inexistant
> ? D'ailleurs, je me suis aussi toujours posé la question de l'intérêt
> d'un avertissement en lieu et place d'une erreur lorsque le
> compilateur sait à la compilation qu'une valeur sera hors plage.
>
> Je ne doute pas de vous voir éclairer ma lanterne :)
La notion d'erreur est définie par la norme. Un programme Ada doit être
accepté s'il ne contient pas d'erreur, et ne doit pas être accepté s'il
en contient.
Les warning sont une gentillesse de la part du compilateur, sans aucune
obligation légale.
Dans ton cas, tout est statique donc il est facile de voir que ce n'est
pas correct, mais cela pourrait aussi bien être dynamique. Donc la règle
(au niveau de la norme) est: c'est diagnostiqué à l'exécution, pas à la
compilation. Le compilateur doit l'accepter, et il y a des tests pour
vérifier que l'exception est levée au bon endroit. Mais comme ça se voit
comme le nez au milieu de la figure, le compilateur te le dit quand
même... mais ça ne peut être qu'un warning.
--
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel:
+33 1 45 29 21 52, Fax:
+33 1 45 29 25 00
http://www.adalog.fr