Exported Type BUG!

Fri, 13 Jun 1997 23:59:20 +0800


This is not really a serious bug because it only generates a warning and the
code works OK. Its very complicating to explain, so just have a look at the
(BIG) example below:


{--TYPES.PAS-----------------------------------------------}

Unit
    Types;

Interface

Type
    TRecord = Record
        Data : Word;
    End;

Implementation

End.


{--PROC.PAS-----------------------------------------------}

Unit
    Proc;

Interface

Uses
    Types;

Procedure TheProc(Var Data:TRecord);

Implementation

Procedure TheProc(Var Data:TRecord);
    Begin
    End;

End.


{--BUG.PAS------------------------------------------------}

Program
    Bug;
Uses
    Types,Proc;
Var
    Data : TRecord;
Begin
    TheProc(Data);    { Line 8 }
End.

{---------------------------------------------------------}

The compiler spews out the following warning message when compiling:

bug.pas: In function `program_Bug':
bug.pas:8: warning: passing arg 1 of `Theproc' from incompatible pointer type

{--------------------------------------------------------}

The pointer is obviously NOT incompatible since its the SAME TYPE.

As an aside: If "TheProc" is a method of an object, the compiler reports
that the incompatible pointer type is passed in "arg 2" instead of "arg 1". :-)

{--------------------------------------------------------}

Now, this is what I call a bug report! Its HUGE, and the bug isnt even very
serious! :-)


Good Work
 ________________________
|  _)        | |             e-mail: bernie@icenet.com.au
|___)ernhard |_|schirren             ptschirrenb@cc.curtin.edu.au
                             www:    www.geocities.com/CollegePark/Quad/8070/


Bernhard Tschirren (bernie@icenet.com.au)

HTML conversion by Lluís de Yzaguirre i Maura
Institut de Lingüística Aplicada - Universitat "Pompeu Fabra"
e-mail: de_yza@upf.es