Delphi compatible generics generate "Compilation raised exception internally"
Original Reporter info from Mantis: DonAlfredo @DonAlfredo
-
Reporter name: Alfred
Original Reporter info from Mantis: DonAlfredo @DonAlfredo
- Reporter name: Alfred
Description:
The FPC compiler can't handle this code (compiles with Delphi):
program project1;
{$ifdef FPC}
{$MODE DELPHI}
{$endif}
uses
Generics.Defaults;
type
Tuple<T> = record
Item1: T;
class operator Equal( a, b: Tuple<T> ): Boolean; // FPC Error: Compilation raised exception internally
class operator NotEqual( a, b: Tuple<T> ): Boolean;
end;
Tuple = record
class function Create<T>( Item1: T ): Tuple<T>; overload; static;
end;
class function Tuple.Create<T>( Item1: T ): Tuple<T>;
begin
Result.Item1 := Item1;
end;
class operator Tuple<T>.Equal( a, b: Tuple<T> ): Boolean;
begin
Result := TEqualityComparer<T>.Default.Equals( a.Item1, b.Item1 );
end;
class operator Tuple<T>.NotEqual( a, b: Tuple<T> ): Boolean;
begin
Result := not( a = b );
end;
begin
end.
Mantis conversion info:
- Mantis ID: 30524
- OS: Win64
- OS Build: Win8
- Build: REV34382
- Platform: Windows
- Version: 3.1.1
- Fixed in version: 3.1.1
- Fixed in revision: 35010 (#a535d54b)