[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