[fpc-pascal] Checking assignment compatibility

Michael Van Canneyt michael at freepascal.org
Mon Jan 6 10:31:22 CET 2014



On Mon, 6 Jan 2014, Mark Morgan Lloyd wrote:

> Michael Van Canneyt wrote:
>> On Sun, 5 Jan 2014, Mark Morgan Lloyd wrote:
>> 
>>> Simulating a C-style conditional, I can do this
>>> 
>>> function tf(const q: qword; const qt, qf: TObject): TObject; inline;
>>> 
>>> begin
>>>  Assert(TypeOf(qt) = TypeOf(result));
>> 
>> This is always true. Everything descends from TOBject.
>> 
>> But assuming the result is not TObject, it would be
>> 
>> Assert((qt=Nil) or (qt.Inheritsfrom(TheResultClass))
>
> So again skipping the nil check for simplicity, this compiles but are the 
> semantics right?
>
> Assert(qt.ClassType.InheritsFrom(result.ClassType));

The classtype is not needed.

The semantics are not right IMHO, but I'd have to see the original C stuff to be able to say with certainty.

Michael.



More information about the fpc-pascal mailing list