+ Added bug0141.pp

This commit is contained in:
michael 1998-06-03 12:01:56 +00:00
parent 4c58972779
commit 246e389703
2 changed files with 64 additions and 1 deletions

62
bugs/bug0141.pp Normal file
View 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$$$$
}

View File

@ -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.