I want to disable a specific warning (W1035) in my code, since I think that the compiler is wrong about this warning:
function TfrmNagScreen.Run: TOption;
begin
I don't have a Delphi compiler available at the moment, but rearranging the code to remove the if..else
might make the warning go away:
function TfrmNagScreen.Run: TOption;
begin
if ShowModal <> mrOk then
Abort;
Result := TOption(rdgAction.EditValue);
end;
See also How to disable a warning in Delphi about “return value … might be undefined”?.
You can use a neat trick to fool the compiler. Define a library function as so:
procedure Abort(var X);
begin
SysUtils.Abort;
end;
You can then write your function as:
if ShowModal = mrOk then
Result := TOption(rdgAction.EditValue)
else
Abort(Result)
The compiler thinks you've written to Result since it's a var parameter and it stops bleating.
you can't disable this warning globally, but you can use the {$WARN NO_RETVAL OFF}
to disable locally the warning.
{$WARN NO_RETVAL OFF}
function TfrmNagScreen.Run: TOption;
begin
if ShowModal = mrOk then
Result := TOption(rdgAction.EditValue)
else
Abort
end;
{$WARN NO_RETVAL ON}