mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-05-07 14:32:32 +02:00
328 lines
6.7 KiB
ObjectPascal
328 lines
6.7 KiB
ObjectPascal
{$mode objfpc}
|
|
{$h+}
|
|
{$modeswitch advancedrecords}
|
|
|
|
unit testunit;
|
|
|
|
interface
|
|
|
|
uses SysUtils, Classes;
|
|
|
|
Const
|
|
AnIntegerConst = 1;
|
|
AStringConst = 'Hello, World!';
|
|
AFLoatconst = 1.23;
|
|
ABooleanConst = True;
|
|
ATypedConst : Integer = 3;
|
|
AnArrayConst : Array[1..3] of Integer = (1,2,3);
|
|
ARecordConst : TMethod = (Code:Nil;Data:Nil);
|
|
ASetConst = [true,false];
|
|
ADeprecatedConst = 1 deprecated;
|
|
|
|
Type
|
|
TAnEnumType = (one,two,three);
|
|
TASetType = Set of TAnEnumType;
|
|
TAnArrayType = Array[1..10] of Integer;
|
|
// TASubRangeType = one..two;
|
|
TABooleanArrayType = Array[Boolean] of Integer;
|
|
TARecordType = Record
|
|
X,Y : Integer;
|
|
Z : String;
|
|
end;
|
|
TAVariantRecordType = Record
|
|
A : String;
|
|
Case Integer of
|
|
1 : (X,Y : Integer);
|
|
2 : (phi,Omega : Real);
|
|
end;
|
|
TAVariantRecordType2 = Record
|
|
A : String;
|
|
Case Atype : Integer of
|
|
1 : (X,Y : Integer);
|
|
2 : (phi,Omega : Real);
|
|
end;
|
|
|
|
TADeprecatedType = Integer deprecated;
|
|
|
|
TMethodRecord = Record
|
|
|
|
Private
|
|
Const aconst = 123;
|
|
X22 : Integer;
|
|
Procedure SetX(AValue : Integer);
|
|
Function GetX : Integer;
|
|
Public
|
|
Procedure MyMethod;
|
|
Property MyX : Integer Read GetX Write SetX;
|
|
Case Integer of
|
|
1 : (X2,Y2 : Integer);
|
|
2 : (phi,Omega : Real);
|
|
end;
|
|
TAExtRecordType = Record
|
|
Const X = 100;
|
|
operator assign(Y : Integer) : TAExtRecordType;
|
|
end;
|
|
|
|
Var
|
|
ASimpleVar : Integer;
|
|
ATypedVar : TMethod;
|
|
ARecordVar : Record
|
|
A,B : integer;
|
|
end;
|
|
AnArrayVar : Array[1..10] of Integer;
|
|
ATypedArray : Array[TanEnumType] of Integer;
|
|
AInitVar : Integer = 1;
|
|
|
|
ADeprecatedVar : Integer deprecated;
|
|
ACVarVar : Integer; cvar;
|
|
AnExternalVar : Integer; external name 'avar';
|
|
AnExternalLibVar : Integer; external 'library' name 'avar';
|
|
|
|
Procedure SimpleProc;
|
|
Procedure OverloadedProc(A : Integer);
|
|
Procedure OverloadedProc(B : String);
|
|
Function SimpleFunc : Integer;
|
|
Function OverloadedFunc(A: Integer) : Integer;
|
|
Function OverloadedFunc(B : String) : Integer;
|
|
|
|
Procedure ConstArgProc(Const A : Integer);
|
|
Procedure VarArgProc(Var A : Integer);
|
|
Procedure OutArgProc(Out A : Integer);
|
|
Procedure UntypedVarArgProc(Var A);
|
|
Procedure UntypedConstArgProc(const A);
|
|
Procedure UntypedOutArgProc(Out A);
|
|
|
|
Procedure ArrayArgProc (A : TAnArrayType);
|
|
Procedure OpenArrayArgProc(A : Array of string);
|
|
Procedure ConstArrayArgProc(A : Array of const);
|
|
|
|
Procedure externalproc; external;
|
|
Procedure externalnameProc; external name 'aname';
|
|
Procedure externallibnameProc; external 'alibrary' name 'aname';
|
|
|
|
Type
|
|
|
|
{ TMyParentClass }
|
|
|
|
TMyParentClass = Class(TComponent)
|
|
Private
|
|
FI : Integer;
|
|
function GetA(AIndex : Integer): String;
|
|
function GetIP(AIndex: integer): String;
|
|
procedure SetA(AIndex : Integer; const AValue: String);
|
|
procedure SetIP(AIndex: integer; const AValue: String);
|
|
Procedure WriteI(AI : Integer);
|
|
Function ReadI : Integer;
|
|
Protected
|
|
Procedure AProtectedMethod;
|
|
Property AProtectedProp : Integer Read FI Write FI;
|
|
Public
|
|
Constructor Create(AOwner : TComponent); override;
|
|
Destructor Destroy; override;
|
|
Procedure AVirtualProc; virtual;
|
|
Procedure AnAbstractProc; virtual; abstract;
|
|
Procedure AMessageProc(Var Msg); Message 123;
|
|
Procedure AStringMessageProc(Var Msg); Message '123';
|
|
Procedure ADeprecatedProc; deprecated;
|
|
Procedure APlatformProc; Platform;
|
|
Property IntProp : Integer Read FI Write Fi;
|
|
Property IntROProp : Integer Read FI;
|
|
Property GetIntProp : Integer Read ReadI Write WriteI;
|
|
Property AnArrayProp[AIndex : Integer] : String Read GetA write SetA;
|
|
Property AnIndexProp : String Index 1 Read GetIP Write SetIP;
|
|
Property AnIndexProp2 : String Index 2 Read GetIP Write SetIP;
|
|
Published
|
|
Procedure SomePublishedMethod;
|
|
end;
|
|
|
|
{ TMyChildClass }
|
|
|
|
TMyChildClass = Class(TMyParentClass)
|
|
Public
|
|
Procedure AVirtualProc; Override;
|
|
Procedure AnAbstractProc; Override;
|
|
Published
|
|
Property AProtectedProp;
|
|
end;
|
|
|
|
Operator + (A,B : TAnArrayType) : TAnArrayType;
|
|
Operator multiply (A,B : TAnArrayType) : TAnArrayType;
|
|
|
|
Implementation
|
|
|
|
Procedure SimpleProc;
|
|
begin
|
|
end;
|
|
|
|
Procedure OverloadedProc(A : Integer);
|
|
begin
|
|
end;
|
|
|
|
Procedure OverloadedProc(B : String);
|
|
begin
|
|
end;
|
|
|
|
Function SimpleFunc : Integer;
|
|
begin
|
|
end;
|
|
|
|
Function OverloadedFunc(A: Integer) : Integer;
|
|
begin
|
|
end;
|
|
|
|
Function OverloadedFunc(B : String) : Integer;
|
|
begin
|
|
end;
|
|
|
|
Procedure ArrayArgProc (A : TAnArrayType);
|
|
begin
|
|
end;
|
|
|
|
Procedure OpenArrayArgProc(A : Array of string);
|
|
begin
|
|
end;
|
|
|
|
Procedure ConstArrayArgProc(A : Array of const);
|
|
begin
|
|
end;
|
|
|
|
Procedure ConstArgProc(Const A : Integer);
|
|
begin
|
|
end;
|
|
|
|
Procedure VarArgProc(Var A : Integer);
|
|
begin
|
|
end;
|
|
|
|
Procedure OutArgProc(Out A : Integer);
|
|
begin
|
|
end;
|
|
|
|
Procedure UntypedVarArgProc(Var A);
|
|
begin
|
|
end;
|
|
|
|
Procedure UntypedConstArgProc(const A);
|
|
begin
|
|
end;
|
|
|
|
Procedure UntypedOutArgProc(Out A);
|
|
begin
|
|
end;
|
|
|
|
|
|
{ TMyChildClass }
|
|
|
|
procedure TMyChildClass.AVirtualProc;
|
|
begin
|
|
inherited AVirtualProc;
|
|
end;
|
|
|
|
procedure TMyChildClass.AnAbstractProc;
|
|
begin
|
|
// Cannot call ancestor
|
|
end;
|
|
|
|
{ TMyParentClass }
|
|
|
|
procedure TMyParentClass.WriteI(AI: Integer);
|
|
begin
|
|
|
|
end;
|
|
|
|
function TMyParentClass.GetA(AIndex : Integer): String;
|
|
begin
|
|
|
|
end;
|
|
|
|
function TMyParentClass.GetIP(AIndex: integer): String;
|
|
begin
|
|
|
|
end;
|
|
|
|
procedure TMyParentClass.SetA(AIndex : Integer; const AValue: String);
|
|
begin
|
|
|
|
end;
|
|
|
|
procedure TMyParentClass.SetIP(AIndex: integer; const AValue: String);
|
|
begin
|
|
|
|
end;
|
|
|
|
function TMyParentClass.ReadI: Integer;
|
|
begin
|
|
|
|
end;
|
|
|
|
procedure TMyParentClass.AProtectedMethod;
|
|
begin
|
|
|
|
end;
|
|
|
|
constructor TMyParentClass.Create(AOwner: TComponent);
|
|
begin
|
|
inherited Create(AOwner);
|
|
end;
|
|
|
|
destructor TMyParentClass.Destroy;
|
|
begin
|
|
inherited Destroy;
|
|
end;
|
|
|
|
procedure TMyParentClass.AVirtualProc;
|
|
begin
|
|
|
|
end;
|
|
|
|
procedure TMyParentClass.AMessageProc(var Msg);
|
|
begin
|
|
|
|
end;
|
|
|
|
procedure TMyParentClass.AStringMessageProc(var Msg);
|
|
begin
|
|
|
|
end;
|
|
|
|
procedure TMyParentClass.ADeprecatedProc;
|
|
begin
|
|
|
|
end;
|
|
|
|
procedure TMyParentClass.APlatformProc;
|
|
begin
|
|
|
|
end;
|
|
|
|
procedure TMyParentClass.SomePublishedMethod;
|
|
begin
|
|
|
|
end;
|
|
|
|
Procedure TMethodRecord.SetX(AValue : Integer);
|
|
|
|
begin
|
|
end;
|
|
|
|
Function TMEthodRecord.GetX : Integer;
|
|
|
|
begin
|
|
end;
|
|
|
|
Procedure TMEthodRecord.MyMethod;
|
|
begin
|
|
end;
|
|
|
|
Operator + (A,B : TAnArrayType) : TAnArrayType;
|
|
|
|
begin
|
|
end;
|
|
|
|
Operator subtract (A,B : TAnArrayType) : TAnArrayType;
|
|
|
|
begin
|
|
end;
|
|
|
|
end.
|