Ver Mensaje Individual
  #1  
Antiguo 15-12-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Bug del compilador en métodos genéricos

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:

Código PHP:
type
  TTest 
= class
  public
    function 
GenericUnasignedFunctionResult<T>: Integer;
    function 
UnasignedFunctionResultInteger;
    
procedure UnusedLocalVar;
    
procedure GenericUnusedLocalVar<T>;
  
end;
 
procedure TTest.GenericUnusedLocalVar<T>;
var
  
UnusedInteger// no se emite hint aqui
begin
end
;
 
procedure TTest.UnusedLocalVar;
var
  
UnusedInteger// H2164 Variable 'Unused' is declared but never used in 'TTest.Hint'
begin
end
;
 
function 
TTest.UnasignedFunctionResultInteger;
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

Última edición por AgustinOrtu fecha: 15-12-2016 a las 17:11:33.
Responder Con Cita