BP style objects: errors.
Thu, 24 Apr 1997 15:12:01 +0100 (WET DST)
Hello,
Using gpc to compile (some parts of) Borland's objects unit, I noticed
this (so far):
1) References to an incomplete type are not accepted. In the code below,
CopyFrom uses a variable S of type TStream, while TStream is not yet
finished:
type
PStream = ^TStream;
TStream = object(TObject)
Status: Integer;
ErrorInfo: Integer;
constructor Init;
procedure CopyFrom(var S: TStream; Count: Longint);
...
BP accepts this, gpc barfs: "type name expected, identifier `Tstream'
given"
2) Something simular appens in the implementation part:
procedure TStream.Error(Code, Info: Integer);
type
TErrorProc = procedure(var S: TStream);
begin
Status := Code;
ErrorInfo := Info;
if StreamError <> nil then TErrorProc(StreamError)(Self);
end;
This results in an error:
objects.pas: In function `Tstream_Error':
objects.pas:141: `object' type definition only allowed at top level
objects.pas:141: parse error before `Procedure'
objects.pas:142: pointer domain type `Terrorproc' undefined
objects.pas:145: undeclared identifier `Terrorproc' (first use this
function)
objects.pas:145: (Each undeclared identifier is reported only once
objects.pas:145: for each function it appears in.)
objects.pas:145: parse error before `('
objects.pas:145: missing semicolon
objects.pas:145: missing semicolon
3) Obviously, `self' is treated different too...
All of this with the latest-but-one alpha release, in BP mode with
extended syntax.
BTW: of course, what I was trying out, was how much trouble it would be to
port TVision to GPC. Seems we have a long way to go....
Greetings,
JanJaap
--
With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going
to land, and it could be dangerous sitting under them as they fly
overhead. -- RFC1925.
Jan-Jaap van der Heijden (janjaap@Wit381304.student.utwente.nl)
HTML conversion by Lluís de Yzaguirre i Maura
Institut de Lingüística Aplicada -
Universitat "Pompeu Fabra"
e-mail: de_yza@upf.es