{$mode objfpc}
function InlineCheckTwoConditions(const Condition1, Condition2: Boolean): Boolean; inline;
begin
Result := Condition1 and Condition2;
end;
function AlwaysFalse: Boolean;
begin
Result := False;
end;
function TestNormal(const Condition1, Condition2: Boolean): Boolean;
begin
Result := Condition1 and Condition2;
end;
function TestDoubleIf(const Condition1, Condition2: Boolean): Boolean;
begin
if Condition1 then
Result := Condition2
else
Result := False;
end;
{$BOOLEVAL ON}
function TestWithInline(const Condition1, Condition2: Boolean): Boolean;
begin
Result := InlineCheckTwoConditions(Condition1, Condition2);
end;
function TestWithFullEval(const Condition1, Condition2: Boolean): Boolean;
begin
Result := Condition1 and Condition2;
end;
begin
TestNormal(AlwaysFalse, AlwaysFalse);
TestDoubleIf(AlwaysFalse, AlwaysFalse);
TestWithInline(AlwaysFalse, AlwaysFalse);
TestWithFullEval(AlwaysFalse, AlwaysFalse);
end.