Incorrect order of class constructors calls
Original Reporter info from Mantis: kazalex
-
Reporter name: Kazantsev Alexey
Original Reporter info from Mantis: kazalex
- Reporter name: Kazantsev Alexey
Description:
Compiler don't care of ordering calls of class constructors.
Steps to reproduce:
program fpc_class_constructor_incorrect_calling_order;
{$mode delphiunicode}
type
trec = record
class var FFactor : double;
type
tnestedrec1 = record
class var FFrequency : Int64;
class constructor InitializeClass;
end;
tnestedrec2 = record
class var FFrequency : Int64;
class constructor InitializeClass;
end;
class constructor InitializeClass;
end;
{ trec.tnestedrec1 }
class constructor trec.tnestedrec1.InitializeClass;
begin
FFrequency := 1000;
writeln('nestedrec1.FFrequency: ', FFrequency);
end;
{ trec.tnestedrec2 }
class constructor trec.tnestedrec2.InitializeClass;
begin
FFrequency := 1000000;
writeln('nestedrec2.FFrequency: ', FFrequency);
end;
{ trec }
class constructor trec.InitializeClass;
begin
writeln('trec.InitializeClass');
// exception, because tnestedrec1 (and nestedrec2) still was not initialized
FFactor := tnestedrec2.FFrequency / tnestedrec1.FFrequency;
end;
begin
writeln('rec.FFactor: ', trec.FFactor);
readln;
end.
Mantis conversion info:
- Mantis ID: 29334
- Build: 32843
- Version: 3.1.1
- Monitored by: » luizamerico (Luiz Americo), » kazalex (Kazantsev Alexey), » @onpok (Ondrej Pokorny), » Vincent (Vincent Snijders), » @PascalDragon (Sven Barth)