diff options
author | peter <peter@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2007-10-18 00:24:05 +0000 |
---|---|---|
committer | peter <peter@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2007-10-18 00:24:05 +0000 |
commit | 18e1befca525a3d8ae7d714c2af256c650085625 (patch) | |
tree | 77cf4290df7f4f93d482cd3a8016e599ba1ae71b /tests | |
parent | 822c6a665f27aac47abb968b07cf9f2e03e50355 (diff) | |
download | fpc-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.pp | 9 | ||||
-rw-r--r-- | tests/test/tgeneric10.pp | 2 | ||||
-rw-r--r-- | tests/test/tgeneric11.pp | 6 | ||||
-rw-r--r-- | tests/test/tgeneric14.pp | 6 | ||||
-rw-r--r-- | tests/test/tgeneric4.pp | 9 | ||||
-rw-r--r-- | tests/test/tgeneric7.pp | 2 | ||||
-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 |