[fpc-pascal] Generics and Scopes
African Wild Dog
paintedlycaon at gmail.com
Thu Nov 10 04:35:02 CET 2016
2016-11-10 1:30 GMT-02:00 African Wild Dog <paintedlycaon at gmail.com>:
> 2016-11-07 14:15 GMT-02:00 Sven Barth <pascaldragon at googlemail.com>:
>
>> Am 07.11.2016 15:58 schrieb "African Wild Dog" <paintedlycaon at gmail.com>:
>> > It is intended to change such compiler behavior in the future? It is
>> incompatible with Delphi and moreover it force us to break the
>> encapsulation of the Generic types.
>>
>> I can't answer this without you providing an example that fails.
>>
>
> Sorry for the noise. Some of my classes were bad designed. They look like
> this sample (Delphi XE 6 compiles):
>
> ==== CODE BEGIN ====
>
> unit sample;
>
> {$MODE delphi}
>
> interface
>
> type
> TGenericRecord<T> = record
> strict private
> Interf: IInterface;
> type
> TMockIntfObject<T> = record // Nested generic declaration
> end;
>
> public
> FValue: T;
> procedure SetValue(Value: T);
> end;
>
> implementation
>
> { TGenericRecord<T> }
>
> procedure TGenericRecord<T>.SetValue(Value: T);
> begin
> Interf := TMockIntfObject.Create;
> end;
>
> end.
>
>
> ==== END ====
>
>
> With fpc i got the error "Fatal: Declation of generic class inside
> another generic class is not allowed".
>
> Best regards
>
>
This is the correct sample:
=== CODE BEGIN ===
unit sample;
{$MODE delphi}
interface
type
TGenericRecord<T> = record
strict private
type
TMockRecord<T> = record // Nested generic declaration
end;
public
FValue: T;
procedure SetValue(Value: T);
end;
implementation
{ TGenericRecord<T> }
procedure TGenericRecord<T>.SetValue(Value: T);
begin
end;
end.
=== END ===
Regards
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20161110/1677e48b/attachment.html>
More information about the fpc-pascal
mailing list