blob: e7bca8a4f1b36d5592c351017a3fe46b69a58ff3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
{ %result=1 }
program project1;
{$mode objfpc}{$H+}
type
{ TOrgObject }
TOriginal=class
protected
procedure SetReadOnly(const AValue: boolean); virtual;
public
property readonly:boolean write SetReadOnly;
end;
{ TDerived }
TDerived=class(TOriginal)
protected
procedure SetReadOnly(const AValue: boolean); override;
end;
var
count1, count2: longint;
{ TDerived }
procedure TDerived.SetReadOnly(const AValue: boolean);
begin
if (count2>0) then
halt(1);
inc(count2);
WriteLn('TDerived.SetReadOnly');
inherited;
inherited ReadOnly := AValue;
end;
{ TOrgObject }
procedure TOriginal.SetReadOnly(const AValue: boolean);
begin
if (count1>1) then
halt(2);
inc(count1);
WriteLn('TOriginal.SetReadOnly');
end;
var
D: TDerived;
begin
D := TDerived.Create;
D.ReadOnly := True;
D.Free;
if (count1<>2) or
(count2<>1) then
halt(3);
end.
|