summaryrefslogtreecommitdiff
path: root/tests/webtbf/tw20721b.pp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/webtbf/tw20721b.pp')
-rw-r--r--tests/webtbf/tw20721b.pp69
1 files changed, 69 insertions, 0 deletions
diff --git a/tests/webtbf/tw20721b.pp b/tests/webtbf/tw20721b.pp
new file mode 100644
index 0000000000..73e3bed515
--- /dev/null
+++ b/tests/webtbf/tw20721b.pp
@@ -0,0 +1,69 @@
+{%norun}
+{%fail}
+program tw20721b;
+{$mode delphi}
+{$apptype console}
+
+type
+ TFrame = class
+ type
+ TNested = class
+ procedure ProcN;
+ end;
+
+ var
+ fField: integer;
+ FNested: TNested;
+
+ procedure ProcF;
+ constructor Create;
+ destructor Destroy; override;
+ property Field: integer read fField write fField;
+ end;
+
+var
+ Frame: TFrame;
+
+ procedure TFrame.TNested.ProcN;
+ begin
+ fField := 1;
+ end;
+
+ procedure TFrame.ProcF;
+ begin
+ WriteLn(Self.ClassName);
+ WriteLn(NativeInt(Self));
+ WriteLn(fField);
+ end;
+
+ constructor TFrame.Create;
+ begin
+ inherited;
+ fField := 23;
+ FNested := TNested.Create;
+ end;
+
+ destructor TFrame.Destroy;
+ begin
+ FNested.Free;
+ end;
+
+begin
+ Frame := TFrame.Create;
+ try
+ Frame.ProcF; { results:
+ TFrame
+ <address of Frame variable>
+ 23
+ }
+ Frame.FNested.ProcN; { results:
+ TFrame.TNested
+ <address of field Frame.FNested>
+ <unpredictable: garbage or AV>
+ }
+ finally
+ Frame.Free
+ end;
+
+end.
+