fpc/tests/test/tclass11b.pp
paul 91ed1c6e6f compiler: types in classes:
- 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 -
2010-01-11 06:22:57 +00:00

71 lines
1.1 KiB
ObjectPascal

{ %FAIL}
program tclass11b;
{$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
P: TPrivateNestedClass;
N: TNestedClass;
begin
P := TPrivateNestedClass.Create;
P.DoSomething;
P.Free;
N := TNestedClass.Create;
N.DoSomething;
N.Free;
end;
begin
TSomeClass.Test;
TDescendant.Test;
end.