[fpc-devel] The usage of Include() doesn't work any more in 2.3.1

Daniël Mantione daniel.mantione at freepascal.org
Wed Jul 16 09:40:31 CEST 2008



Op Wed, 16 Jul 2008, schreef Graeme Geldenhuys:

> It compiles without issues under FPC 2.2.3 and prior.  What is wrong
> with using Include() to add to a set?  I do it all the time, plus
> WindowAttribute is a read/write property, unlike the compiler error in
> 2.0.4 where you could use Include() with a read-only property.  Is
> this not a regression bug in FPC 2.3.1 maybe?

2.3 prevents you form taking the address of a property, because that way 
you can read/write its value directly, circumventing the getter/setter. So 
you cannot use the @ operator, but neither can you pass properties to var 
parameters. Include is an internal procedure that calls an rtl function 
that receives the set as a "var" parameter, preventing include to work.

I think there can be two visions here:
- Include is not a real procedure, so this internal implementation detail
   should be hidden and this can/should be allowed; the
   compiler internally should convert it into set:=set+[member].
- While include is not a real procedure, its set parameter is clearly
   defined as "var". Passing properties to var parameters is not allowed,
   so it should not be allowed for include either.

Daniël


More information about the fpc-devel mailing list