Browse Source

+ test I forgot to commit earlier

git-svn-id: trunk@13309 -
Jonas Maebe 16 years ago
parent
commit
089ff79c3b
2 changed files with 52 additions and 0 deletions
  1. 1 0
      .gitattributes
  2. 51 0
      tests/test/opt/twpo6.pp

+ 1 - 0
.gitattributes

@@ -8010,6 +8010,7 @@ tests/test/opt/twpo2.pp svneol=native#text/plain
 tests/test/opt/twpo3.pp svneol=native#text/plain
 tests/test/opt/twpo4.pp svneol=native#text/plain
 tests/test/opt/twpo5.pp svneol=native#text/plain
+tests/test/opt/twpo6.pp svneol=native#text/plain
 tests/test/opt/twpo7.pp svneol=native#text/plain
 tests/test/opt/uwpo2.pp svneol=native#text/plain
 tests/test/packages/fcl-base/tascii85.pp svneol=native#text/plain

+ 51 - 0
tests/test/opt/twpo6.pp

@@ -0,0 +1,51 @@
+{ %wpoparas=devirtcalls,optvmts }
+{ %wpopasses=1 }
+
+{$mode objfpc}
+{$m+}
+
+{ check that multiple descendents properly mark parent class method as
+  non-optimisable
+}
+
+type
+  tbase = class
+    procedure test; virtual;
+  end;
+
+  tchild1 = class(tbase)
+    procedure test; override;
+  end;
+
+  tchild2 = class(tbase)
+   published
+    procedure test; override;
+  end;
+
+procedure tbase.test;
+begin
+  halt(1);
+end;
+
+var
+  a: longint;
+
+procedure tchild1.test;
+begin
+  if a<>1 then
+    halt(2);
+end;
+
+procedure tchild2.test;
+begin
+  if a<>2 then
+    halt(3);
+end;
+
+var
+  bb: tbase;
+begin
+  bb:=tchild1.create;
+  if (bb is tchild2) then
+    halt(1);
+end.