Browse Source

+ test procedure override in generic classes

git-svn-id: trunk@5425 -
micha 18 years ago
parent
commit
da1fcf6e34
2 changed files with 46 additions and 0 deletions
  1. 1 0
      .gitattributes
  2. 45 0
      tests/test/tgeneric12.pp

+ 1 - 0
.gitattributes

@@ -6475,6 +6475,7 @@ tests/test/tfpuover.pp svneol=native#text/plain
 tests/test/tgeneric1.pp svneol=native#text/plain
 tests/test/tgeneric1.pp svneol=native#text/plain
 tests/test/tgeneric10.pp svneol=native#text/plain
 tests/test/tgeneric10.pp svneol=native#text/plain
 tests/test/tgeneric11.pp svneol=native#text/plain
 tests/test/tgeneric11.pp svneol=native#text/plain
+tests/test/tgeneric12.pp svneol=native#text/plain
 tests/test/tgeneric2.pp svneol=native#text/plain
 tests/test/tgeneric2.pp svneol=native#text/plain
 tests/test/tgeneric3.pp svneol=native#text/plain
 tests/test/tgeneric3.pp svneol=native#text/plain
 tests/test/tgeneric4.pp svneol=native#text/plain
 tests/test/tgeneric4.pp svneol=native#text/plain

+ 45 - 0
tests/test/tgeneric12.pp

@@ -0,0 +1,45 @@
+{$mode objfpc}
+
+type
+  TSList = class(TObject)
+    procedure Test; virtual;
+  end;
+
+   generic TList<_T> = class(TSList)
+     data : _T;
+     procedure Add(item: _T);
+     procedure Test; override;
+   end;
+
+  TListCompareFunc = function(Item1, Item2: Integer): Integer;
+
+procedure TSList.Test;
+begin
+  writeln('should call TList!');
+  halt(1);
+end;
+
+procedure TList.Add(item: _T);
+begin
+  data:=item;
+end;
+
+procedure TList.Test;
+begin
+  if data <> 10 then
+    halt(1);
+  writeln('ok');
+end;
+
+type
+  TMyIntList = specialize TList<Integer>;
+
+var
+  ilist: TMyIntList;
+  list: TSList;
+begin
+  ilist := TMyIntList.Create;
+  list := ilist;
+  ilist.add(10);
+  list.test;
+end.