michael 27 rokov pred
rodič
commit
2fcbb9a87d
2 zmenil súbory, kde vykonal 67 pridanie a 0 odobranie
  1. 66 0
      bugs/bug0187.pp
  2. 1 0
      bugs/readme.txt

+ 66 - 0
bugs/bug0187.pp

@@ -0,0 +1,66 @@
+program test;
+
+type
+        Tbaseclass = object
+                constructor     Init;
+                destructor      Done;
+                procedure       Run;                            virtual;
+
+        end;
+        Totherclass = object(Tbaseclass)
+                procedure       Run;                            virtual;
+
+        end;
+
+constructor Tbaseclass.Init;
+
+begin
+  writeln('Init');
+  Run;
+end;
+
+destructor Tbaseclass.Done;
+
+begin
+  writeln('Done');
+end;
+
+procedure Tbaseclass.Run;
+
+begin
+  writeln('Base method');
+end;
+
+
+procedure Totherclass.Run;
+
+begin
+  writeln('Inherited method');
+end;
+
+var     base            : Tbaseclass;
+        other           : Totherclass;
+        asmrec          : Tasmrec;
+        testfield       : longint;
+
+begin
+// Uncommenting here and commenting the init in the WIth solves it.
+//  Base.Init;
+  with base do
+  begin
+    Init;
+    Run;
+    Done;
+  end;
+// Uncommenting here and commenting the init in the WIth solves it.
+//  Other.init;
+  with other do
+  begin
+    Init;
+    Run;
+    Done;
+  end;
+
+{ Calls Tbaseclass.Run when it should call Totherclass.Run }
+
+end.

+ 1 - 0
bugs/readme.txt

@@ -248,3 +248,4 @@ bug0171.pp   missing typecasting in constant expressions
 bug0183.pp   internal error 10
 bug0183.pp   internal error 10
 bug0185.pp   missing range checking for Val and subrange types
 bug0185.pp   missing range checking for Val and subrange types
 bug0186.pp   Erroneous array syntax is accepted.
 bug0186.pp   Erroneous array syntax is accepted.
+bug0187.pp   constructor in a WIth statement isn't called correct.