mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 17:47:56 +02:00

- fix type visibility (was always public) - fix parsing of class sections after the type declaration - allow nested classes declarations + tests git-svn-id: trunk@14607 -
65 lines
1.0 KiB
ObjectPascal
65 lines
1.0 KiB
ObjectPascal
program tclass11a;
|
|
{$ifdef fpc}
|
|
{$mode delphi}
|
|
{$endif}
|
|
{$apptype console}
|
|
|
|
type
|
|
TSomeClass = class
|
|
strict private
|
|
type
|
|
TPrivateNestedClass = class
|
|
public
|
|
procedure DoSomething;
|
|
end;
|
|
public
|
|
type
|
|
TNestedClass = class
|
|
public
|
|
procedure DoSomething;
|
|
end;
|
|
class procedure Test; virtual;
|
|
end;
|
|
|
|
TDescendant = class(TSomeClass)
|
|
public
|
|
class procedure Test; override;
|
|
end;
|
|
|
|
procedure TSomeClass.TPrivateNestedClass.DoSomething;
|
|
begin
|
|
WriteLn('TSomeClass.TPrivateNestedClass.DoSomething: ok');
|
|
end;
|
|
|
|
procedure TSomeClass.TNestedClass.DoSomething;
|
|
begin
|
|
WriteLn('TSomeClass.TNestedClass.DoSomething: ok');
|
|
end;
|
|
|
|
class procedure TSomeClass.Test;
|
|
var
|
|
P: TPrivateNestedClass;
|
|
N: TNestedClass;
|
|
begin
|
|
P := TPrivateNestedClass.Create;
|
|
P.DoSomething;
|
|
P.Free;
|
|
N := TNestedClass.Create;
|
|
N.DoSomething;
|
|
N.Free;
|
|
end;
|
|
|
|
class procedure TDescendant.Test;
|
|
var
|
|
N: TNestedClass;
|
|
begin
|
|
N := TNestedClass.Create;
|
|
N.DoSomething;
|
|
N.Free;
|
|
end;
|
|
|
|
begin
|
|
TSomeClass.Test;
|
|
TDescendant.Test;
|
|
end.
|