Re: [fpc-pascal] Generics and Scopes
2016-11-10 1:30 GMT-02:00 African Wild Dog: > 2016-11-07 14:15 GMT-02:00 Sven Barth : > >> Am 07.11.2016 15:58 schrieb "African Wild Dog" : >> > 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 = record > strict private > Interf: IInterface; > type > TMockIntfObject = record // Nested generic declaration > end; > > public > FValue: T; > procedure SetValue(Value: T); > end; > > implementation > > { TGenericRecord } > > procedure TGenericRecord.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 = record strict private type TMockRecord = record // Nested generic declaration end; public FValue: T; procedure SetValue(Value: T); end; implementation { TGenericRecord } procedure TGenericRecord.SetValue(Value: T); begin end; end. === END === Regards ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Generics and Scopes
2016-11-07 14:15 GMT-02:00 Sven Barth: > Am 07.11.2016 15:58 schrieb "African Wild Dog" : > > 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 = record strict private Interf: IInterface; type TMockIntfObject = record // Nested generic declaration end; public FValue: T; procedure SetValue(Value: T); end; implementation { TGenericRecord } procedure TGenericRecord.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 ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Generics and Scopes
Am 07.11.2016 15:58 schrieb "African Wild Dog": > 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. Regards, Sven ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Generics and Scopes
On Mon, 7 Nov 2016, African Wild Dog wrote: Hello, I have tried to compile some delphi projects using the latest FPC (3.0.0) release, and i got several errors related to Ggenerics feature. Reading the FPC documentation (section 8.8 - A Word About Scope) i have found that FPC requires that all external types and procedures used in the the Generic type implementation must be visible when the Generic type is specialized. 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. It may well be that this part of the text is no longer valid. Sven Barth would need to look at it to see if it is still so. Michael. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
[fpc-pascal] Generics and Scopes
Hello, I have tried to compile some delphi projects using the latest FPC (3.0.0) release, and i got several errors related to Ggenerics feature. Reading the FPC documentation (section 8.8 - A Word About Scope) i have found that FPC requires that all external types and procedures used in the the Generic type implementation must be visible when the Generic type is specialized. 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. Best regards ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal