|
@@ -82,7 +82,7 @@ end;
|
|
class procedure tbaseclass.call_virtual_class_method;
|
|
class procedure tbaseclass.call_virtual_class_method;
|
|
begin
|
|
begin
|
|
virtual_class_method;
|
|
virtual_class_method;
|
|
- if getsize<>sizeof(self) then
|
|
|
|
|
|
+ if get_type<>typeof(self) then
|
|
begin
|
|
begin
|
|
Writeln('Compiler creates garbage');
|
|
Writeln('Compiler creates garbage');
|
|
has_error:=true;
|
|
has_error:=true;
|
|
@@ -111,11 +111,18 @@ var
|
|
c1,cb : tbaseclass;
|
|
c1,cb : tbaseclass;
|
|
cd : tderivedclass;
|
|
cd : tderivedclass;
|
|
cc : class of tbaseclass;
|
|
cc : class of tbaseclass;
|
|
|
|
+ pb,pd : pointer;
|
|
|
|
|
|
begin
|
|
begin
|
|
cb:=tbaseclass.create;
|
|
cb:=tbaseclass.create;
|
|
cd:=tderivedclass.create;
|
|
cd:=tderivedclass.create;
|
|
c1:=tbaseclass.create;
|
|
c1:=tbaseclass.create;
|
|
|
|
+ pb:=typeof(tbaseclass);
|
|
|
|
+ pd:=typeof(tderivedclass);
|
|
|
|
+ if pb<>typeof(cb) then
|
|
|
|
+ has_error:=true;
|
|
|
|
+ if pd<>typeof(cd) then
|
|
|
|
+ has_error:=true;
|
|
|
|
|
|
basesize:=sizeof(cb);
|
|
basesize:=sizeof(cb);
|
|
Writeln('Sizeof(cb)=',basesize);
|
|
Writeln('Sizeof(cb)=',basesize);
|
|
@@ -195,6 +202,7 @@ begin
|
|
|
|
|
|
cc:=tderivedclass;
|
|
cc:=tderivedclass;
|
|
|
|
|
|
|
|
+
|
|
cc.class_check_type;
|
|
cc.class_check_type;
|
|
|
|
|
|
cc.virtual_class_method;
|
|
cc.virtual_class_method;
|