I have a function that gives me the following warning:
[DCC Warning] filename.pas(6939): W1035 Return value of function 'function' might be undefined
The function, however, is clean, small, and does have a known, expected, return value. The first statement in the function is:
Result := '';
and there is no local variable or parameter called Result
either.
Is there any kind of pragma-like directive I can surround this method with to remove this warning? This is Delphi 2007.
Unfortunately, the help system on this Delphi installation is not working, therefore i can't pop up the help for that warning right now.
Anyone know off the top of their head what i can do?
In order to get a good answer for this, you'll have to post the code. In general, the Delphi compiler will give this warning if there is a possible code path that could result in the Result not being defined. Sometimes that code path is less than obvious.
There is such a bug in Delphi compiler since, at least, Delphi4: if sum of numbers of function's parameters (including Self and Result) and local variables exceeds 31, it causes problems. For example, it can write W1035 warnings (result might be undefined). It can miss not used variables. Just try this project:
It would cause 31 hint, not 40.
I am not sure that I want to see the code for this unit... after all, the error occurs at line 6939 ... Maybe some internal compiler table have been exceeded?
The {$WARN NO_RETVAL OFF} is what you are looking for, but generally I like to find out why stuff like this happens. You might consider formatting it differently and seeing if that helps.
Do you have any flow altering commands like Exit in there? Do you directly raise exceptions, etc? Does your case statement have an else at the end that sets a value on Result?
Might try tweaking those elements and see if that eliminates the warning too.
Are you sure you have done everything to solve the warning? Maybe you could post the code for us to look at?
You can turn off the warning locally this way:
There seems to be some sort of bug in Delphi. Read this post, the last comment links to other bug-reports that may be the one that you have got:
http://qc.codegear.com/wc/qcmain.aspx?d=8144