sizeof does not work on nested generic type
Original Reporter info from Mantis: BeniBela @benibela
-
Reporter name: Benito van der Zander
Original Reporter info from Mantis: BeniBela @benibela
- Reporter name: Benito van der Zander
Description:
Here sizeof appears to be 0
program Project1;
{$mode objfpc}{$H+}
type
generic TTest<TKey, TValue> = packed object
type
TPair = packed record
key: TKey;
value: TValue;
end;
TPairSizeEquivalent = packed array[1..sizeof(TPair)] of byte;
end;
TTestStringString = specialize TTest<string, string>;
begin
writeln(sizeof(TTestStringString.TPairSizeEquivalent));
end.
because the array definition raises
test.pas(19,56) Error: High range limit < low range limit
test.pas(19,56) Error: Upper bound of range is less than lower bound
but it should have sizeof(TKey) + sizeof(TValue)
Mantis conversion info:
- Mantis ID: 34232
- Build: 39694
- Version: 3.1.1
- Fixed in version: 3.3.1
- Fixed in revision: 48758 (#34f7c3e6)
- Monitored by: » @genericptr (Ryan Joseph)