Browse Source

* some new bugs

pierre 25 years ago
parent
commit
fec0db7ba0
4 changed files with 130 additions and 0 deletions
  1. 17 0
      tests/webtbs/tbug934.pp
  2. 22 0
      tests/webtbs/tbug935.pp
  3. 17 0
      tests/webtbs/tbug937.pp
  4. 74 0
      tests/webtbs/tbug938.pp

+ 17 - 0
tests/webtbs/tbug934.pp

@@ -0,0 +1,17 @@
+{ $OPT=-Or }
+{$mode objfpc}
+ Type
+      t = class(TObject)
+       f1,f2:dword;
+       constructor Init(p1, p2:dword);
+      end;
+
+ constructor t.Init(p1, p2:dword);
+ begin
+  f1:=p1; f2:=p2;
+ end;
+ var ti:t;
+begin
+ ti:=t.Init(1,2);
+ writeln(ti.f1, ', ', ti.f2) // prints garbage instead of t2
+end.

+ 22 - 0
tests/webtbs/tbug935.pp

@@ -0,0 +1,22 @@
+
+procedure test(v:boolean);
+
+ procedure notice(s:string);inline;
+ begin
+ writeln(s);
+ end;
+
+begin
+if v then notice('this string vanishes.');
+writeln('"test" main body executed.');
+end;
+
+
+
+begin
+writeln('testing with True...');
+test(true);
+writeln;
+writeln('testing with False...');
+test(false);
+end.

+ 17 - 0
tests/webtbs/tbug937.pp

@@ -0,0 +1,17 @@
+program test_0_to_power_6;
+
+uses
+  crt;
+var
+ result,number,exponent : integer;
+begin
+ number := 0;
+ exponent := 6;
+ result := number ** exponent;
+ write (result);
+ if result<>0 then
+   begin
+     Writeln(' 0 ** 6 should be equal to 0');
+     Halt(1);
+   end;
+end.

+ 74 - 0
tests/webtbs/tbug938.pp

@@ -0,0 +1,74 @@
+Program test_operator;
+type
+    Vector = record
+        X,Y,Z : extended;
+        end;
+    Matrix = array [1..4,1..4] of extended;
+
+Const
+  IDENTITYMATRIX : Matrix =
+  ( (1,0,0,0),
+    (0,1,0,0),
+    (0,0,1,0),
+    (0,0,0,1));
+{...}
+
+function NewVector (ax,ay,az : extended) : Vector;
+begin
+  NewVector.X:=ax;
+  NewVector.Y:=ay;
+  NewVector.Z:=az;
+end;
+
+operator * (V : Vector;Value : extended) Result : Vector;
+  begin
+    Result.X:=Result.X*Value;
+    Result.Y:=Result.Y*Value;
+    Result.Z:=Result.Z*Value;
+  end;
+{...}
+operator * (Value : extended;V : Vector) Result : Vector;
+  begin
+    Result.X:=Result.X*Value;
+    Result.Y:=Result.Y*Value;
+    Result.Z:=Result.Z*Value;
+  end;
+{...}
+
+
+operator * (M : Matrix;Value : extended) Result : Matrix;
+ var i,j : longint;
+  begin
+    for i:=1 to 4 do
+      for j:=1 to 4 do
+        Result[i,j]:=M[i,j]*Value;
+  end;
+{...}
+operator * (Value : extended;M : Matrix) Result : Matrix;
+ var i,j : longint;
+  begin
+    for i:=1 to 4 do
+      for j:=1 to 4 do
+        Result[i,j]:=M[i,j]*Value;
+  end;
+{...}
+
+var
+   V1, V2 : Vector;
+   M1, M2 : Matrix;
+
+begin
+     V1 := NewVector (1,1,1);
+     V2 := V1 * 2;
+     { Everything ok }
+
+
+     M2 := IDENTITYMATRIX;
+     M1 := M2 * 2;
+     M1 := IDENTITYMATRIX * 2;
+     M2 := IDENTITYMATRIX * 4;
+     { Error: Incompatible types: got "E3MATRIX" expected "LONGINT"  in both rows. This doesn't happen if I use 2.0 and 4.0 values. }
+
+
+     {...}
+end.