program tb0681;

{$Mode Delphi}

type R = record
    var X: Integer;
    function Foo: Integer;
end;

function R.Foo: Integer;
begin
    result := X
end;

var    F: function : Integer of object;
    Z: R = (X:42);
begin
    // EXPECTED: gets compiled
    // ACTUAL: 'Error: Incompatible types'
    F := Z.Foo;
    if F() <> 42 then
      Halt(1);
end.