mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-22 04:09:30 +02:00
Added 36 tests (tchlp*.pp) and some units (uchlp*).
git-svn-id: branches/svenbarth/classhelpers@16730 -
This commit is contained in:
parent
aed9f0a5f7
commit
18ed600cbe
14
.gitattributes
vendored
14
.gitattributes
vendored
@ -9278,6 +9278,10 @@ tests/test/tcase7.pp svneol=native#text/pascal
|
||||
tests/test/tcase8.pp svneol=native#text/pascal
|
||||
tests/test/tcase9.pp svneol=native#text/pascal
|
||||
tests/test/tcg1.pp svneol=native#text/plain
|
||||
tests/test/tchlp1.pp svneol=native#text/pascal
|
||||
tests/test/tchlp2.pp svneol=native#text/pascal
|
||||
tests/test/tchlp35.pp svneol=native#text/pascal
|
||||
tests/test/tchlp36.pp svneol=native#text/pascal
|
||||
tests/test/tcint64.pp svneol=native#text/plain
|
||||
tests/test/tclass1.pp svneol=native#text/plain
|
||||
tests/test/tclass10.pp svneol=native#text/pascal
|
||||
@ -9788,6 +9792,16 @@ tests/test/twrstr6.pp svneol=native#text/plain
|
||||
tests/test/twrstr7.pp svneol=native#text/plain
|
||||
tests/test/twrstr8.pp svneol=native#text/plain
|
||||
tests/test/uabstrcl.pp svneol=native#text/plain
|
||||
tests/test/uchlp27a.pp svneol=native#text/pascal
|
||||
tests/test/uchlp27b.pp svneol=native#text/pascal
|
||||
tests/test/uchlp27c.pp svneol=native#text/pascal
|
||||
tests/test/uchlp32a.pp svneol=native#text/pascal
|
||||
tests/test/uchlp32b.pp svneol=native#text/pascal
|
||||
tests/test/uchlp32c.pp svneol=native#text/pascal
|
||||
tests/test/uchlp33a.pp svneol=native#text/pascal
|
||||
tests/test/uchlp33b.pp svneol=native#text/pascal
|
||||
tests/test/uchlp33c.pp svneol=native#text/pascal
|
||||
tests/test/uchlp35.pp svneol=native#text/pascal
|
||||
tests/test/uenum2a.pp svneol=native#text/plain
|
||||
tests/test/uenum2b.pp svneol=native#text/plain
|
||||
tests/test/ugeneric10.pp svneol=native#text/plain
|
||||
|
50
tests/test/tchlp1.pp
Normal file
50
tests/test/tchlp1.pp
Normal file
@ -0,0 +1,50 @@
|
||||
{%NORUN}
|
||||
|
||||
{ checks for support of the class helper syntax in mode objfpc }
|
||||
program tchlp1;
|
||||
|
||||
{$mode objfpc}
|
||||
|
||||
type
|
||||
TObjectHelper = class helper for TObject
|
||||
procedure SomePublicMethod;
|
||||
strict private
|
||||
procedure SomeStrictPrivateMethod;
|
||||
private
|
||||
procedure SomePrivateMethod;
|
||||
strict protected
|
||||
procedure SomeStrictProtectedMethod;
|
||||
protected
|
||||
procedure SomeProtectedMethod;
|
||||
public
|
||||
procedure SomePublicMethod2;
|
||||
end;
|
||||
|
||||
procedure TObjectHelper.SomePublicMethod;
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure TObjectHelper.SomeStrictPrivateMethod;
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure TObjectHelper.SomePrivateMethod;
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure TObjectHelper.SomeStrictProtectedMethod;
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure TObjectHelper.SomeProtectedMethod;
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure TObjectHelper.SomePublicMethod2;
|
||||
begin
|
||||
end;
|
||||
|
||||
begin
|
||||
|
||||
end.
|
||||
|
52
tests/test/tchlp2.pp
Normal file
52
tests/test/tchlp2.pp
Normal file
@ -0,0 +1,52 @@
|
||||
{%NORUN}
|
||||
|
||||
{ checks for support of the class helper syntax in mode delphi }
|
||||
program tchlp2;
|
||||
|
||||
{$ifdef fpc}
|
||||
{$mode delphi}
|
||||
{$endif}
|
||||
|
||||
type
|
||||
TObjectHelper = class helper for TObject
|
||||
procedure SomePublicMethod;
|
||||
strict private
|
||||
procedure SomeStrictPrivateMethod;
|
||||
private
|
||||
procedure SomePrivateMethod;
|
||||
strict protected
|
||||
procedure SomeStrictProtectedMethod;
|
||||
protected
|
||||
procedure SomeProtectedMethod;
|
||||
public
|
||||
procedure SomePublicMethod2;
|
||||
end;
|
||||
|
||||
procedure TObjectHelper.SomePublicMethod;
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure TObjectHelper.SomeStrictPrivateMethod;
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure TObjectHelper.SomePrivateMethod;
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure TObjectHelper.SomeStrictProtectedMethod;
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure TObjectHelper.SomeProtectedMethod;
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure TObjectHelper.SomePublicMethod2;
|
||||
begin
|
||||
end;
|
||||
|
||||
begin
|
||||
|
||||
end.
|
||||
|
26
tests/test/tchlp35.pp
Normal file
26
tests/test/tchlp35.pp
Normal file
@ -0,0 +1,26 @@
|
||||
{ tests virtual methods inside class helpers }
|
||||
program tchlp35;
|
||||
|
||||
uses
|
||||
uchlp35;
|
||||
|
||||
type
|
||||
TObjectHelperB = class helper(TObjectHelperA) for TObject
|
||||
function VirtualTest: Integer; override;
|
||||
end;
|
||||
|
||||
function TObjectHelperB.VirtualTest: Integer;
|
||||
begin
|
||||
Result := 2;
|
||||
end;
|
||||
|
||||
var
|
||||
o: TObject;
|
||||
res: Integer;
|
||||
begin
|
||||
o := TObject.Create;
|
||||
res := o.Test;
|
||||
if res <> 2 then
|
||||
Halt(1);
|
||||
end.
|
||||
|
29
tests/test/tchlp36.pp
Normal file
29
tests/test/tchlp36.pp
Normal file
@ -0,0 +1,29 @@
|
||||
{ %NORUN }
|
||||
|
||||
program tchlp36;
|
||||
|
||||
{$ifdef fpc}
|
||||
{$mode delphi}
|
||||
{$endif}
|
||||
|
||||
type
|
||||
TObjectHelper = class helper for TObject
|
||||
procedure Test;
|
||||
end;
|
||||
|
||||
TFoo = class
|
||||
|
||||
end;
|
||||
|
||||
TFooHelper = class helper(TObjectHelper) for TFoo
|
||||
end;
|
||||
|
||||
procedure TObjectHelper.Test;
|
||||
begin
|
||||
end;
|
||||
|
||||
var
|
||||
f: TFoo;
|
||||
begin
|
||||
f.Test;
|
||||
end.
|
24
tests/test/uchlp27a.pp
Normal file
24
tests/test/uchlp27a.pp
Normal file
@ -0,0 +1,24 @@
|
||||
unit uchlp27a;
|
||||
|
||||
{$ifdef fpc}
|
||||
{$mode objfpc}{$H+}
|
||||
{$endif}
|
||||
|
||||
interface
|
||||
|
||||
type
|
||||
TFoo = class
|
||||
function Test: Integer;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
{ TFoo }
|
||||
|
||||
function TFoo.Test: Integer;
|
||||
begin
|
||||
Result := 1;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
25
tests/test/uchlp27b.pp
Normal file
25
tests/test/uchlp27b.pp
Normal file
@ -0,0 +1,25 @@
|
||||
unit uchlp27b;
|
||||
|
||||
{$ifdef fpc}
|
||||
{$mode objfpc}{$H+}
|
||||
{$endif}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
uchlp27a;
|
||||
|
||||
type
|
||||
TFooHelper = class helper for TFoo
|
||||
function Test: Integer;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
function TFooHelper.Test: Integer;
|
||||
begin
|
||||
Result := 2;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
27
tests/test/uchlp27c.pp
Normal file
27
tests/test/uchlp27c.pp
Normal file
@ -0,0 +1,27 @@
|
||||
unit uchlp27c;
|
||||
|
||||
{$ifdef fpc}
|
||||
{$mode objfpc}{$H+}
|
||||
{$endif}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
uchlp27a;
|
||||
|
||||
type
|
||||
TBar = class(TFoo)
|
||||
function Test: Integer;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
{ TBar }
|
||||
|
||||
function TBar.Test: Integer;
|
||||
begin
|
||||
Result := 3;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
16
tests/test/uchlp32a.pp
Normal file
16
tests/test/uchlp32a.pp
Normal file
@ -0,0 +1,16 @@
|
||||
unit uchlp32a;
|
||||
|
||||
{$ifdef fpc}
|
||||
{$mode objfpc}{$H+}
|
||||
{$endif}
|
||||
|
||||
interface
|
||||
|
||||
type
|
||||
TFoo = class
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
end.
|
||||
|
25
tests/test/uchlp32b.pp
Normal file
25
tests/test/uchlp32b.pp
Normal file
@ -0,0 +1,25 @@
|
||||
unit uchlp32b;
|
||||
|
||||
{$ifdef fpc}
|
||||
{$mode objfpc}{$H+}
|
||||
{$endif}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
uchlp32a;
|
||||
|
||||
type
|
||||
TFooHelperA = class helper for TFoo
|
||||
procedure Method1;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
procedure TFooHelperA.Method1;
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
end.
|
||||
|
25
tests/test/uchlp32c.pp
Normal file
25
tests/test/uchlp32c.pp
Normal file
@ -0,0 +1,25 @@
|
||||
unit uchlp32c;
|
||||
|
||||
{$ifdef fpc}
|
||||
{$mode objfpc}{$H+}
|
||||
{$endif}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
uchlp32a;
|
||||
|
||||
type
|
||||
TFooHelperB = class helper for TFoo
|
||||
procedure Method2;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
procedure TFooHelperB.Method2;
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
end.
|
||||
|
16
tests/test/uchlp33a.pp
Normal file
16
tests/test/uchlp33a.pp
Normal file
@ -0,0 +1,16 @@
|
||||
unit uchlp33a;
|
||||
|
||||
{$ifdef fpc}
|
||||
{$mode objfpc}{$H+}
|
||||
{$endif}
|
||||
|
||||
interface
|
||||
|
||||
type
|
||||
TFoo = class
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
end.
|
||||
|
25
tests/test/uchlp33b.pp
Normal file
25
tests/test/uchlp33b.pp
Normal file
@ -0,0 +1,25 @@
|
||||
unit uchlp33b;
|
||||
|
||||
{$ifdef fpc}
|
||||
{$mode objfpc}{$H+}
|
||||
{$endif}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
uchlp33a;
|
||||
|
||||
type
|
||||
TFooHelper = class helper for TFoo
|
||||
function Test: Integer;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
function TFooHelper.Test: Integer;
|
||||
begin
|
||||
Result := 1;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
25
tests/test/uchlp33c.pp
Normal file
25
tests/test/uchlp33c.pp
Normal file
@ -0,0 +1,25 @@
|
||||
unit uchlp33c;
|
||||
|
||||
{$ifdef fpc}
|
||||
{$mode objfpc}{$H+}
|
||||
{$endif}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
uchlp33a, uchlp33b;
|
||||
|
||||
type
|
||||
TFooHelper2 = class helper(TFooHelper) for TFoo
|
||||
function Test: Integer;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
function TFooHelper2.Test: Integer;
|
||||
begin
|
||||
Result := 2;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
28
tests/test/uchlp35.pp
Normal file
28
tests/test/uchlp35.pp
Normal file
@ -0,0 +1,28 @@
|
||||
unit uchlp35;
|
||||
|
||||
{$ifdef fpc}
|
||||
{$mode objfpc}{$H+}
|
||||
{$endif}
|
||||
|
||||
interface
|
||||
|
||||
type
|
||||
TObjectHelperA = class helper for TObject
|
||||
function Test: Integer;
|
||||
function VirtualTest: Integer; virtual;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
function TObjectHelperA.Test: Integer;
|
||||
begin
|
||||
Result := VirtualTest;
|
||||
end;
|
||||
|
||||
function TObjectHelperA.VirtualTest: Integer;
|
||||
begin
|
||||
Result := 1;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user