summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorpeter <peter@3ad0048d-3df7-0310-abae-a5850022a9f2>2007-10-18 00:24:05 +0000
committerpeter <peter@3ad0048d-3df7-0310-abae-a5850022a9f2>2007-10-18 00:24:05 +0000
commit18e1befca525a3d8ae7d714c2af256c650085625 (patch)
tree77cf4290df7f4f93d482cd3a8016e599ba1ae71b /tests
parent822c6a665f27aac47abb968b07cf9f2e03e50355 (diff)
downloadfpc-18e1befca525a3d8ae7d714c2af256c650085625.tar.gz
* improved generics
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@8838 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'tests')
-rw-r--r--tests/test/tgeneric1.pp9
-rw-r--r--tests/test/tgeneric10.pp2
-rw-r--r--tests/test/tgeneric11.pp6
-rw-r--r--tests/test/tgeneric14.pp6
-rw-r--r--tests/test/tgeneric4.pp9
-rw-r--r--tests/test/tgeneric7.pp2
-rw-r--r--tests/test/ugeneric7.pp (renamed from tests/test/tugeneric7.pp)2
7 files changed, 28 insertions, 8 deletions
diff --git a/tests/test/tgeneric1.pp b/tests/test/tgeneric1.pp
index 7927e84b18..1290f1f646 100644
--- a/tests/test/tgeneric1.pp
+++ b/tests/test/tgeneric1.pp
@@ -13,10 +13,12 @@ end;
type
TMyIntList = specialize TList<integer>;
+ TMyIntList2 = specialize TList<integer>;
TMyStringList = specialize TList<string>;
var
ilist : TMyIntList;
+ ilist2 : TMyIntList2;
slist : TMyStringList;
someInt : integer;
begin
@@ -27,6 +29,13 @@ begin
if ilist.data<>10 then
halt(1);
+ someInt:=20;
+ ilist2 := TMyIntList2.Create;
+ ilist2.Add(someInt);
+ writeln(ilist2.data);
+ if ilist2.data<>20 then
+ halt(1);
+
slist := TMyStringList.Create;
slist.Add('Test');
writeln(slist.data);
diff --git a/tests/test/tgeneric10.pp b/tests/test/tgeneric10.pp
index 7578c74e09..cd0c9fc9a3 100644
--- a/tests/test/tgeneric10.pp
+++ b/tests/test/tgeneric10.pp
@@ -6,7 +6,7 @@ uses
type
TMyIntList = specialize TList<integer>;
-function CompareInt(Item1, Item2: Integer): Integer;
+function CompareInt(const Item1, Item2: Integer): Integer;
begin
Result := Item2 - Item1;
end;
diff --git a/tests/test/tgeneric11.pp b/tests/test/tgeneric11.pp
index 4f35f1502b..3b4d9585f6 100644
--- a/tests/test/tgeneric11.pp
+++ b/tests/test/tgeneric11.pp
@@ -2,10 +2,10 @@
type
generic TList<_T>=class(TObject)
- var public
+ var public
data : _T;
procedure Add(item: _T);
- procedure Assign(Source: TList);
+ procedure Assign(Source: specialize TList<_T>);
end;
procedure TList.Add(item: _T);
@@ -13,7 +13,7 @@ begin
data:=item;
end;
-procedure TList.Assign(Source: TList);
+procedure TList.Assign(Source: specialize TList<_T>);
begin
data:=Source.data;
end;
diff --git a/tests/test/tgeneric14.pp b/tests/test/tgeneric14.pp
index 7339ce6801..94b67cde47 100644
--- a/tests/test/tgeneric14.pp
+++ b/tests/test/tgeneric14.pp
@@ -1,7 +1,11 @@
+{ %fail }
+
{$mode objfpc}
{ we test the context sensitivity of generics here, by checking whether names
- are looked up at specialization or at definition time }
+ are looked up at specialization or at definition time.
+ For the moment this fails, because the assembler symbols are not global and
+ therefor not accessible from other .o files }
uses
ugeneric14;
diff --git a/tests/test/tgeneric4.pp b/tests/test/tgeneric4.pp
index 9873031ed5..99e17e338e 100644
--- a/tests/test/tgeneric4.pp
+++ b/tests/test/tgeneric4.pp
@@ -1,3 +1,5 @@
+{ %fail }
+
uses ugeneric4;
procedure LocalFill;
@@ -5,6 +7,11 @@ begin
globaldata:='Program';
end;
+{ The next specialization should not find the LocalFill
+ defined in the program. It should found the LocalFill
+ in ugeneric4, but for the moment that is not allowed since
+ the assembler symbol is not global and will therefor
+ generate a failure a linking time (PFV) }
type
TMyStringList = specialize TList<string>;
@@ -14,6 +21,6 @@ begin
slist := TMyStringList.Create;
slist.Fill;
writeln(slist.data);
- if slist.data<>'Program' then
+ if slist.data<>'Unit' then
halt(1);
end.
diff --git a/tests/test/tgeneric7.pp b/tests/test/tgeneric7.pp
index e3773b6770..fbfe2f5a20 100644
--- a/tests/test/tgeneric7.pp
+++ b/tests/test/tgeneric7.pp
@@ -5,7 +5,7 @@
{$R-}
uses
- tugeneric7;
+ ugeneric7;
type
tmytype = specialize tgeneric<byte>;
diff --git a/tests/test/tugeneric7.pp b/tests/test/ugeneric7.pp
index 25b580c710..597f45bfd0 100644
--- a/tests/test/tugeneric7.pp
+++ b/tests/test/ugeneric7.pp
@@ -1,6 +1,6 @@
{$mode objfpc}
-unit tugeneric7;
+unit ugeneric7;
interface