fpc/tests/tbs/tb0148.pp
2000-11-30 22:38:14 +00:00

69 lines
1.3 KiB
ObjectPascal

{ %OPT=-Sg }
{ Old file: tbs0178.pp }
{ problems with undefined labels and fail outside constructor OK 0.99.9 (PM) }
PROGRAM NoLabel; { this program compiles fine with TP but not with FP }
type
ptestobj = ^ttestobj;
ttestobj = object
constructor init;
procedure test_self;
end;
const
allowed : boolean = false;
constructor ttestobj.init;
begin
if not allowed then
fail;
end;
procedure ttestobj.test_self;
function myself : ptestobj;
begin
myself:=@self;
end;
begin
if myself<>@self then
begin
Writeln('problem with self');
Halt(1);
end;
end;
LABEL
N1,
N2,
FAIL, { this is a reserved word in constructors only! - FP fails here
}
More; { label not defined - FP fails, but a warning is enough for that
}
{ since label referenced nowhere }
var ptest : ptestobj;
self : longint;
BEGIN
new(ptest,init);
if ptest<>nil then
begin
Writeln('Fail does not work !!');
Halt(1);
end;
allowed:=true;
new(ptest,init);
if ptest=nil then
begin
Writeln('Constructor does not work !!');
Halt(1);
end
else
ptest^.test_self;
N1: Write;
N2: Write;
FAIL: Write;
self:=1;
END.