[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:45:20 CEST 2008
Op Wed, 16 Jul 2008, schreef Daniël Mantione:
> 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.
I forgot: The fact that 2.2 allows it does not mean 2.2 will generate
correct code! Your getter/setter will be bypassed with 2.2 if you use
include, that is why 2.3 prevents the generation of incorrect code.
Daniël
More information about the fpc-devel
mailing list