diff --git a/tests/webtbs/tbug825.pp b/tests/webtbs/tbug825.pp new file mode 100644 index 0000000000..5499e320d7 --- /dev/null +++ b/tests/webtbs/tbug825.pp @@ -0,0 +1,39 @@ +{$mode tp} +{ args for destructors + are allowed in TP mode for compatibility only PM } + +program test_destructor_with_args; + +var + z : longint; + + type + tt = object + constructor dummy; + destructor done(x : longint);virtual; + end; + + constructor tt.dummy; + begin + end; + + destructor tt.done; + begin + Writeln('x in tt.done is ',x); + z:=x; + end; + + var + pt : ^tt; + +begin + Writeln('ln(5)=',ln(5)); + new(pt,dummy); + pt^.done(4); + if z<>4 then + Halt(1); + pt^.dummy; + dispose(pt,done(5)); + if z<>5 then + Halt(1); +end. \ No newline at end of file diff --git a/tests/webtbs/tbug848.pp b/tests/webtbs/tbug848.pp index 9140e303c6..378fe7fa99 100644 --- a/tests/webtbs/tbug848.pp +++ b/tests/webtbs/tbug848.pp @@ -3,8 +3,7 @@ PROCEDURE a; VAR v,v2,v3:integer; - PROCEDURE b; - BEGIN + PROCEDURE b;assembler; ASM MOV AX,v mov v2,AX @@ -13,7 +12,6 @@ VAR v,v2,v3:integer; MOV AX,[EBP+OFFSET v] MOV v3,AX END; - END; BEGIN v:=5; diff --git a/tests/webtbs/tbug866.pp b/tests/webtbs/tbug866.pp new file mode 100644 index 0000000000..09f98e2a75 --- /dev/null +++ b/tests/webtbs/tbug866.pp @@ -0,0 +1,17 @@ +{$mode objfpc} +Type + ts = set of (tse); + ts2 = set of (t1,t2); + enum3 = (tm1:=-1,t0,tp1); + ts3 = set of t0 .. tp1; + var + f:ts; + f2 : ts2; + f3 : ts3; + +begin + f2:=f2+[t2]; + f2:=f2+[t1]; + f:=f+[tse]; // compiler says that set elements are not compatible + { f3:=[tm1];} +end. \ No newline at end of file diff --git a/tests/webtbs/tbug869.pp b/tests/webtbs/tbug869.pp new file mode 100644 index 0000000000..6700374792 --- /dev/null +++ b/tests/webtbs/tbug869.pp @@ -0,0 +1,24 @@ +program prueba; +uses crt; +var + resultado,exponente:integer; +begin + exponente := 3; + resultado := -1 ** exponente; + writeln (resultado); + if resultado<>-1 then + Halt(1); + exponente := 4; + resultado := -(1 ** exponente); + writeln (resultado); + if resultado<>-1 then + Halt(1); + resultado := (-1) ** exponente; + writeln (resultado); + if resultado<>1 then + Halt(1); + resultado := -1 ** exponente; + writeln (resultado); + if resultado<>-1 then + Halt(1); +end. \ No newline at end of file diff --git a/tests/webtbs/tbug870.pp b/tests/webtbs/tbug870.pp new file mode 100644 index 0000000000..d62a1aac2e --- /dev/null +++ b/tests/webtbs/tbug870.pp @@ -0,0 +1,21 @@ +{$mode objfpc} +uses sysUtils; + + type + t = object + f:integer; + function m: AnsiString; + end; + + function t.m: AnsiString; + begin + result:=IntToStr(f); + end; + + var ti:t; + +begin + ti.f:=1; // no vmt for t - constructor call is not needed + writeln(format('%s', [ti.m])); // this works + writeln(format('%s, %s', [ti.m, ti.m])); // this does not - the same story with classes +end. \ No newline at end of file