[fpc-pascal] Constants in generics tests
Jeppe Johansen
jeppe at j-software.dk
Fri Feb 15 19:52:24 CET 2019
Hi,
Do you know why this doesn't work?
type
TGPIO = class
public
class function ReadValue: NativeUInt; virtual; abstract;
class procedure SetValue(AValue: NativeUInt); virtual; abstract;
class function GetPin(const AIndex: NativeInt): boolean; virtual;
end;
generic TStm32GPIO<const Base: integer> = class(TGPIO)
public
class function ReadValue: NativeUInt; override;
class procedure SetValue(AValue: NativeUInt); override;
end;
class function TGPIO.GetPin(const AIndex: NativeInt): boolean;
begin
result:=Odd(ReadValue shr AIndex);
end;
class function TStm32GPIO.ReadValue: NativeUInt;
begin
result:=PNativeUInt(Base)^;
end;
class procedure TStm32GPIO.SetValue(AValue: NativeUInt);
begin
PNativeUInt(Base)^:=AValue;
end;
type GPIOA = specialize TStm32GPIO<$12400000>;
Best Regards,
Jeppe
On 2/15/19 5:22 PM, Ryan Joseph wrote:
> Here’s the latest changes which fixed the constant type checking and includes some tests. Are the tests in the correct format? They are named tgenconst*.pp.
>
> https://github.com/genericptr/freepascal/tree/generic_constants
>
> For example:
>
> {%FAIL}
> {$mode objfpc}
> program tgenconst8;
> type
> generic TByte<const U: Byte> = record end;
> var
> a: specialize TByte<300>;
> begin
> end.
>
>
> This will now give an error because 300 is a SmallInt. That’s everything I can think of for now. Please let me know if this is ready to submit yet.
>
> Regards,
> Ryan Joseph
>
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
More information about the fpc-pascal
mailing list