среда, 21 октября 2020 г.

#872. Another compilation bug in Sydney under 64 bit

unit tcOldObject5;

interface

uses
 TestFrameWork
;

type
 TtcOldObject5 = class(TTestCase)
  published
   procedure DoIt;
 end;//TtcOldObject5

 Tl3_PointUnion = packed record
  Case Byte of
   0: (X: Integer; Y: Integer);
 end;//Tl3_PointUnion

 TOldObject1 = object
  private
   P: Tl3_PointUnion;
  public
   property X: Integer
    read P.X
    write P.X;
 end;//TOldObject1

function IntFunc(aValue: Integer): Integer;
function ObjFunc(const anObj: TOldObject1): Integer;

implementation

function IntFunc(aValue: Integer): Integer;
begin
 Result := aValue;
end;//IntFunc

function ObjFunc(const anObj: TOldObject1): Integer;
begin
 Result := IntFunc(anObj.X);
end;//IntFunc

procedure TtcOldObject5.DoIt;
const
 cValue = 1024;
var
 l_O1 : TOldObject1;
begin
 l_O1.X := cValue;
 Self.CheckTrue(l_O1.X = cValue);
 Self.CheckTrue(IntFunc(l_O1.X) = cValue);
 Self.CheckFalse(ObjFunc(l_O1) = cValue); // Ooops !
end;//TtcOldObject5.DoIt

initialization
 TestFrameWork.RegisterTest(TtcOldObject5.Suite);
end.

Комментариев нет:

Отправить комментарий