{ %fail } program BugTest; {$mode objfpc} type TTest = class private FTest: Integer; procedure SetTest(const Value: Integer); public property Test: Integer read FTest write SetTest; end; procedure p(var i : longint); begin end; { TTest } procedure TTest.SetTest(const Value: Integer); begin Writeln('SetTest called!'); FTest := Value; end; var Test: TTest; begin Test := TTest.Create; Test.Test := 2; p(Test.Test); end.