summaryrefslogtreecommitdiff
path: root/compiler/psub.pas
diff options
context:
space:
mode:
authorflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2013-11-06 21:11:03 +0000
committerflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2013-11-06 21:11:03 +0000
commit9744ec69fc0614a5f2d33883a20c7ed10b240dec (patch)
tree5279134532c345ebf9440000c9e30f0ee725c579 /compiler/psub.pas
parent5a8f3caa7421563ce714a70060ea2906cac8cc42 (diff)
downloadfpc-9744ec69fc0614a5f2d33883a20c7ed10b240dec.tar.gz
+ warn for uninitialized out parameters when dfa is enabled
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@25977 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/psub.pas')
-rw-r--r--compiler/psub.pas13
1 files changed, 11 insertions, 2 deletions
diff --git a/compiler/psub.pas b/compiler/psub.pas
index e09701c8d2..8da8d5ddc7 100644
--- a/compiler/psub.pas
+++ b/compiler/psub.pas
@@ -1278,14 +1278,23 @@ implementation
{ Give warning/note for living locals }
if assigned(varsym.owner) and
+ ((varsym.owner=procdef.localst) or
+ ((varsym.owner=procdef.parast) and
+ (varsym.typ=paravarsym) and
+ (tparavarsym(varsym).varspez=vs_out)
+ )
+ ) and
not(vo_is_external in varsym.varoptions) then
begin
if (vo_is_funcret in varsym.varoptions) then
CGMessage(sym_w_function_result_uninitialized)
else
begin
- if (varsym.owner=procdef.localst) and not (vo_is_typed_const in varsym.varoptions) then
- CGMessage1(sym_w_uninitialized_local_variable,varsym.realname);
+ if not (vo_is_typed_const in varsym.varoptions) then
+ if varsym.typ=paravarsym then
+ CGMessage1(sym_w_uninitialized_variable,varsym.realname)
+ else
+ CGMessage1(sym_w_uninitialized_local_variable,varsym.realname);
end;
end;
end;