t_id
168
t_adddate
2003/10/03
t_result
0
t_knownrunerror
0
Record count: 50
Total = 50
OK=50 Percentage= 100.00
Result type | Cat. | Count | Percentage | First date | Last Date |
Successfully run | 50 | 100.0 | 2024/09/26 18:42:00 90 | 2024/09/26 23:02:00 44 | |
i386 | 4 | 8.0 | 2024/09/26 19:54:00 70 | 2024/09/26 22:38:00 79 | |
powerpc | 14 | 28.0 | 2024/09/26 19:41:00 35 | 2024/09/26 23:02:00 44 | |
powerpc64 | 17 | 34.0 | 2024/09/26 18:42:00 90 | 2024/09/26 22:29:00 103 | |
wasm32 | 7 | 14.0 | 2024/09/26 19:31:00 339 | 2024/09/26 22:50:00 299 | |
riscv64 | 8 | 16.0 | 2024/09/26 19:14:00 123 | 2024/09/26 19:59:00 123 | |
linux | 39 | 78.0 | 2024/09/26 18:42:00 90 | 2024/09/26 23:02:00 44 | |
go32v2 | 4 | 8.0 | 2024/09/26 19:54:00 70 | 2024/09/26 22:38:00 79 | |
wasi | 7 | 14.0 | 2024/09/26 19:31:00 339 | 2024/09/26 22:50:00 299 | |
3.3.1 | 34 | 68.0 | 2024/09/26 18:42:00 90 | 2024/09/26 22:50:00 299 | |
3.2.3 | 16 | 32.0 | 2024/09/26 21:17:00 71 | 2024/09/26 23:02:00 44 |
{$mode objfpc} type tbaseclass = class x : longint; function get_type : pointer; function get_type2 : pointer;virtual; procedure check_type; class procedure virtual_class_method;virtual; end; tderivedclass = class(tbaseclass) y : longint; function get_type2 : pointer;override; class procedure virtual_class_method;override; end; const tbasecalled : boolean = false; tderivedcalled : boolean = false; has_error : boolean = false; expected_size_for_tbaseclass = sizeof(pointer) + sizeof(longint); expected_size_for_tderivedclass = sizeof(pointer) + 2*sizeof(longint); var basesize : longint; derivedsize : longint; function tbaseclass.get_type : pointer; begin get_type:=typeof(self); end; function tbaseclass.get_type2 : pointer; begin get_type2:=typeof(self); end; procedure tbaseclass.check_type; begin if typeof(self)<>get_type then begin Writeln('Compiler creates garbage'); has_error:=true; end; if typeof(self)<>get_type2 then begin Writeln('Compiler creates garbage'); has_error:=true; end; if get_type<>get_type2 then begin Writeln('get_type and get_type2 return different pointers'); has_error:=true; end; end; procedure tbaseclass.virtual_class_method; begin Writeln('Calling tbase class class method'); tbasecalled:=true; if sizeof(self)<>basesize then begin has_error:=true; Writeln('Error with sizeof'); end; end; function tderivedclass.get_type2 : pointer; begin get_type2:=typeof(self); end; procedure tderivedclass.virtual_class_method; begin Writeln('Calling tderived class class method'); tderivedcalled:=true; if sizeof(self)<>derivedsize then begin has_error:=true; Writeln('Error with sizeof'); end; end; procedure reset_booleans; begin tbasecalled:=false; tderivedcalled:=false; end; var c1,cb : tbaseclass; cd : tderivedclass; cc : class of tbaseclass; pb,pd : pointer; begin cb:=tbaseclass.create; cd:=tderivedclass.create; c1:=tbaseclass.create; basesize:=sizeof(cb); Writeln('Sizeof(cb)=',basesize); if basesize<>sizeof(pointer) then Writeln('not the expected size : ',sizeof(pointer)); derivedsize:=sizeof(cd); Writeln('Sizeof(ct)=',derivedsize); if derivedsize<>sizeof(pointer) then Writeln('not the expected size : ',sizeof(pointer)); cb.check_type; cd.check_type; c1.destroy; c1:=tderivedclass.create; c1.virtual_class_method; if not tderivedcalled then has_error:=true; reset_booleans; c1.destroy; cc:=tbaseclass; cc.virtual_class_method; if not tbasecalled then has_error:=true; reset_booleans; cc:=tderivedclass; cc.virtual_class_method; if not tderivedcalled then has_error:=true; reset_booleans; if has_error then begin Writeln('Error with class methods'); halt(1); end; end.