Re: changer de sous-type au surnommage

Liste des GroupesRevenir à fcl ada 
Sujet : Re: changer de sous-type au surnommage
De : rosen (at) *nospam* adalog.fr (J-P. Rosen)
Groupes : fr.comp.lang.ada
Date : 20. Jan 2022, 06:33:31
Autres entêtes
Organisation : Adalog
Message-ID : <ssas7a$jpj$1@dont-email.me>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0
Le 19/01/2022 à 22:24, Thomas a écrit :
en Ada 83 un sous-type pouvait déjà être dynamique ?
oui bien sûr, le principe a toujours été:
type => statique
Sous-type => dynamique

et une règle de compilation ne peut pas
dépendre de quelque chose qui n'est connu qu'à l'exécution.
 je ne comprend pas ce que tu dis, puisque le comportement attendu est de
lever Constraint_Error à l'exécution.
??? Je ne sais pas où tu as vu ça... D'ailleurs, en 8.5.1 il n'y a même pas de paragraphe "dynamic semantic".
Ce qui est important, c'est 8.5.1(6/2) qui dit clairement que tout ce qu'on peut mettre dans la déclaration de surnom est ignoré, ce qui compte c'est ce qui est dit dans la déclaration de l'objet d'origine.

A partir d'Ada 95, on a introduit la notion de "statically matching
subtypes", mais il a été estimé que cela compliquerait trop les choses
de l'appliquer aux rename,
 (peut-être que je comprendrai avec les questions précédentes)
 
et de toute façon ça ne pouvait pas marcher
dans tous les cas sans casser la compatibilité.
Ce que je veux dire, c'est que l'idéal aurait été que les définitions de sous-type de la déclaration et de l'objet renommé correspondent, sous peine d'erreur à la compilation. Mais en Ada83 ce n'était pas possible puisqu'il n'y avait jamais de correspondance statique entre des sous-types. Ada95 a introduit la notion de "statically matching subtypes", mais l'utiliser pour un rename aurait conduit à interdire tous les renames d'un objet dont le sous-type était dynamique => trop incompatible.

de même que l'interdiction du mot "constant", qui ne devrait pas
forcément vérifier si l'objet pointé en est une, mais au moins que toute
utilisation du surnom respecte ça.
Effectivement, on aurait pu imaginer un rename avec le mot "constant" qui fournirait une vue constante d'une variable (comme un paramètre "in"). Ca n'a pas été fait, et honnètement je ne sais pas ce qu'Ichbiah avait en tête comme cas d'utilisation du rename. Mais je peux te dire que ça complique énormément les outils d'analyse de code ;-)
[...]

ce dont je parlais c'était plutôt ça :
      V : Integer := 0;
     C : constant Integer renames V;
 d'après mon expérience, c'est totalement interdit d'écrire ça,
et d'après ce que j'ai compris du langage, c'est autorisé mais sans
aucune conséquence (c'est pire).
Non, ce n'est pas dans la syntaxe du rename.
 en fait, ce qui me paraitrait logique, c'est que :
- le surnom doive obligatoirement être marqué "constant" si l'objet
pointé l'est, mais pas réciproquement,
C'est logique, mais on ne peut plus le rajouter maintenant, vu qu'on a des rename de constantes qui n'utilisent pas le mot "constant"

- l'usage autorisé du surnom dépende du marquage du surnom, pas de
l'objet pointé.
 
Ca pourrait être rajouté au langage. On (l'ARG) est en train de mettre en route un système pour centraliser les demandes des utilisateurs. Tu pourras toujours le proposer quand ce sera annoncé...
--
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel: +33 1 45 29 21 52
https://www.adalog.fr

Date Sujet#  Auteur
19 Jan 22 * Re: Utiliser un access ou pas ?4Thomas
19 Jan 22 `* Re: Utiliser un access ou pas ?3J-P. Rosen
19 Jan 22  `* changer de sous-type au surnommage2Thomas
20 Jan 22   `- Re: changer de sous-type au surnommage1J-P. Rosen

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal