Hola a todos,
He encontrado una falla que esta hace bastante tiempo en el compilador de Delphi. Se trata de que el compilador no es capaz de reportar hints y warnings en metodos genericos, cuando si escribimos el mismo metodo sin usar el tipo generico si puede detectar los potenciales problemas. Ya hemos hablado aqui de lo importante que son los hint y warning y ejemplos de situaciones en las que puede salvar el dia hay cientos, como este
He creado un reporte en el sitio de Embarcadero, este es el link
Cuantos mas voten en la incidencia, mayor prioridad deberia tener para el equipo de Embarcadero y deberiamos verlo solucionado
El problema es reproducible en Delphi 2010, Delphi 10 Seattle y Delphi 10.1 Berlin, por lo que asumo que existe desde Delphi 2009 que es cuando se introdujeron los genericos hasta el dia de hoy
Quien no disponga de una version nueva de Delphi puede reproducirlo facilmente con la version Delphi 10.1 Berlin Starter. En el reporte pueden encontrar el siguiente fragmento de codigo:
type TTest = class public function GenericUnasignedFunctionResult<T>: Integer; function UnasignedFunctionResult: Integer; procedure UnusedLocalVar; procedure GenericUnusedLocalVar<T>; end; procedure TTest.GenericUnusedLocalVar<T>; var Unused: Integer; // no se emite hint aqui begin end; procedure TTest.UnusedLocalVar; var Unused: Integer; // H2164 Variable 'Unused' is declared but never used in 'TTest.Hint' begin end; function TTest.UnasignedFunctionResult: Integer; begin // W1035 Return value of function 'TTest.UnasignedFunctionResult' might be undefined end; function TTest.GenericUnasignedFunctionResult<T>: Integer; begin // no se emite warning aqui end;
Considero que este problema es de altisima prioridad y deberia ser solucionado lo antes posible
Asi que este es un llamado para que todo aquel que considere que este problema merece su debida importancia, vote el reporte, por favor