fpc/tests/webtbs/tw27185.pp
svenbarth b38fb606cc Fix for Mantis #27185.
ngenutil.pas:
  * AddToStructInits: also process the class constructors/destructors of nested types

+ added test

git-svn-id: trunk@29308 -
2014-12-21 14:01:32 +00:00

100 lines
2.0 KiB
ObjectPascal

program tw27185;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
var
NormalClassInit: Boolean = False;
NormalClassDone: Boolean = False;
NestedTypeClassInit: Boolean = False;
NestedTypeClassDone: Boolean = False;
NestedTypeClassNestedClassInit: Boolean = False;
NestedTypeClassNestedClassDone: Boolean = False;
Type
{ TNormalClass }
TNormalClass = class
public
class constructor Create;
class destructor Destroy;
end;
{ TNestedTypeClass }
TNestedTypeClass = class
private
type
{ TNestedClass }
TNestedClass = class
public
class constructor Create;
class destructor Destroy;
end;
public
class constructor Create;
class destructor Destroy;
end;
{ TNestedTypeClass }
class constructor TNestedTypeClass.Create;
begin
NestedTypeClassInit := True;
//WriteLn('class constructor TNestedTypeClass.Create');
end;
class destructor TNestedTypeClass.Destroy;
begin
NestedTypeClassDone := True;
//WriteLn('class destructor TNestedTypeClass.Destroy');
end;
{ TNormalClass }
class constructor TNormalClass.Create;
begin
NormalClassInit := True;
//WriteLn('class constructor TNormalClass.Create');
end;
class destructor TNormalClass.Destroy;
begin
NormalClassDone := False;
//WriteLn('class destructor TNormalClass.Destroy');
end;
{ TNestedTypeClass.TNestedClass }
class constructor TNestedTypeClass.TNestedClass.Create;
begin
NestedTypeClassNestedClassInit := True;
//WriteLn('class constructor TNestedTypeClass.TNestedClass.Create');
end;
class destructor TNestedTypeClass.TNestedClass.Destroy;
begin
NestedTypeClassNestedClassDone := True;
//WriteLn('class destructor TNestedTypeClass.TNestedClass.Destroy');
end;
begin
if not NormalClassInit then
Halt(1);
if not NestedTypeClassInit then
Halt(2);
if not NestedTypeClassNestedClassInit then
Halt(3);
end.