[2.2] Impossible d'assigner une variable de type T à une variable de type T
Bonjour tous/toutes,
Ceci est une suspiscion de bug qui concerne le nouveau FPC 2.2.
Mieux qu'un long discours préalable, un exemple vous parlera plus directement.
Code:
1 2 3 4 5 6 7 8 9
|
PROCEDURE Test;
TYPE
T = ARRAY OF Char;
VAR
V : T;
BEGIN
V := V;
END; |
Aussi étonnant que cela puisse parraître, ce code ne peut plus être compilé sous FPC 2.2. Il y a renvoie du message « illegal expression » au sujet de la ligne « V := V; ».
J'ai d'abord pensé à une fonctionnalité volontaire : comme l'assignation des tableaux dynamiques ne copie pas le contenu, mais la référence au contenu, il est possible d'imaginer que cela soit parfois source d'erreur par inattention dans certains codes, et que l'équipe de développement de FPC ait décidé donc d'interdire cette assignation, en ne rendant possible que la copie totale par la fonction Copy. Mais l'exemple suivant montre que cette construction ne fonctionne pas non-plus.
Code:
1 2 3 4 5 6 7 8 9
|
PROCEDURE Test;
TYPE
T = ARRAY OF Char;
VAR
V : T;
BEGIN
V := Copy(V);
END; |
Là encore, le compilateur indique « illegal expression » en désignant l'assignation comme étant fautive.
Bilan : il semble bien que ce soit un bug, et non pas une fonctionnalité. Ce bug peut potentiellement s'exprimer fréquement, car les assignations de tableaux dynamiques ne sont pas rares.
J'ai soumis le cas sur le site freepascal.org, dans l'attente d'une réponse dont je vous tiendrai informé(e)s.
Bonne journée, à+