mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 15:47:53 +02:00
+ Added bug0141.pp
This commit is contained in:
parent
4c58972779
commit
246e389703
62
bugs/bug0141.pp
Normal file
62
bugs/bug0141.pp
Normal file
@ -0,0 +1,62 @@
|
||||
program bug;
|
||||
|
||||
uses objpas;
|
||||
type
|
||||
//
|
||||
TObjectAB = class;
|
||||
TObjectABCD = class;
|
||||
TObjectABCDEF = class;
|
||||
// }
|
||||
TObjectAB = class(tobject)
|
||||
a, b: integer;
|
||||
end ;
|
||||
TObjectABCD = class(TObjectAB)
|
||||
c, d: integer;
|
||||
end ;
|
||||
TObjectABCDEF = class(TObjectABCD)
|
||||
e, f: integer;
|
||||
end ;
|
||||
|
||||
var
|
||||
a, b, c: TObject;
|
||||
|
||||
begin
|
||||
a := TObjectAB.Create;
|
||||
WriteLn(a.InstanceSize, ' Should be: 12');
|
||||
b := TObjectABCD.Create;
|
||||
WriteLn(b.InstanceSize, ' Should be: 20');
|
||||
c := TObjectABCDEF.Create;
|
||||
WriteLn(c.InstanceSize, ' Should be: 28');
|
||||
end.
|
||||
|
||||
{
|
||||
Here are the VMT tables from the assembler file:
|
||||
|
||||
.globl VMT_TD$_TOBJECTAB
|
||||
VMT_TD$_TOBJECTAB:
|
||||
.long 12,-12
|
||||
.long VMT_OBJPAS$_TOBJECT
|
||||
.long _OBJPAS$$_$$_TOBJECT_DESTROY
|
||||
.long _OBJPAS$$_$$_TOBJECT_NEWINSTANCE
|
||||
.long _OBJPAS$$_$$_TOBJECT_FREEINSTANCE
|
||||
.long _OBJPAS$$_$$_TOBJECT_SAFECALLEXCEPTION$TOBJECT$POINTER
|
||||
.long _OBJPAS$$_$$_TOBJECT_DEFAULTHANDLER$$$$
|
||||
.globl VMT_TD$_TOBJECTABCD
|
||||
VMT_TD$_TOBJECTABCD:
|
||||
.long 12,-12
|
||||
.long VMT_TD$_TOBJECTAB
|
||||
.long _OBJPAS$$_$$_TOBJECT_DESTROY
|
||||
.long _OBJPAS$$_$$_TOBJECT_NEWINSTANCE
|
||||
.long _OBJPAS$$_$$_TOBJECT_FREEINSTANCE
|
||||
.long _OBJPAS$$_$$_TOBJECT_SAFECALLEXCEPTION$TOBJECT$POINTER
|
||||
.long _OBJPAS$$_$$_TOBJECT_DEFAULTHANDLER$$$$
|
||||
.globl VMT_TD$_TOBJECTABCDEF
|
||||
VMT_TD$_TOBJECTABCDEF:
|
||||
.long 12,-12
|
||||
.long VMT_TD$_TOBJECTABCD
|
||||
.long _OBJPAS$$_$$_TOBJECT_DESTROY
|
||||
.long _OBJPAS$$_$$_TOBJECT_NEWINSTANCE
|
||||
.long _OBJPAS$$_$$_TOBJECT_FREEINSTANCE
|
||||
.long _OBJPAS$$_$$_TOBJECT_SAFECALLEXCEPTION$TOBJECT$POINTER
|
||||
.long _OBJPAS$$_$$_TOBJECT_DEFAULTHANDLER$$$$
|
||||
}
|
@ -189,4 +189,5 @@ bug0135.pp Unsupported subrange type construction.
|
||||
bug0137.pp Cannot assign child object variable to parent objcet type variable
|
||||
bug0138.pp with problem, %esi can be crushed and is not restored
|
||||
bug0139.pp Cannot access protected method of ancestor class from other unit.
|
||||
bug0140.pp Shows that interdependent units still are not OK. You need to compile a second time to see the error.
|
||||
bug0140.pp Shows that interdependent units still are not OK. You need to compile a second time to see the error.
|
||||
bug0141.pp Wrong Class sizes when using forwardly defined classes.
|
Loading…
Reference in New Issue
Block a user