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.
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; ».
Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 PROCEDURE Test; TYPE T = ARRAY OF Char; VAR V : T; BEGIN V := V; END;
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. Là encore, le compilateur indique « illegal expression » en désignant l'assignation comme étant fautive.
Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 PROCEDURE Test; TYPE T = ARRAY OF Char; VAR V : T; BEGIN V := Copy(V); END;
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, à+
Partager