* fix #40331: for enumeration with holes (that don't have type information) use the binary comparers

+ added test
This commit is contained in:
Sven/Sarah Barth 2023-06-30 16:30:46 +02:00
parent 82857174cc
commit d5c1533377
2 changed files with 15 additions and 1 deletions

View File

@ -2180,7 +2180,8 @@ end;
class function TComparerService.TypeNeedsBinaryMethods<T>: Boolean;
begin
Result := GetTypeKind(T) in TComparerService.UseBinaryMethods;
Result := (GetTypeKind(T) in TComparerService.UseBinaryMethods) or
((GetTypeKind(T) = tkEnumeration) and not Assigned(TypeInfo(T)));
end;
class function TComparerService.LookupComparer(ATypeInfo: PTypeInfo; ASize: SizeInt): Pointer;

13
tests/webtbs/tw40331.pp Normal file
View File

@ -0,0 +1,13 @@
program tw40331;
{$mode delphi}
uses Generics.Defaults;
type
SomeEnum = (zero = 0, two = 2);
var
z: IEqualityComparer<SomeEnum>;
begin
z:= TEqualityComparer<SomeEnum>.Default;
WriteLn('Done');
//ReadLn;
end.