diff options
author | florian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2013-11-06 21:11:03 +0000 |
---|---|---|
committer | florian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2013-11-06 21:11:03 +0000 |
commit | 9744ec69fc0614a5f2d33883a20c7ed10b240dec (patch) | |
tree | 5279134532c345ebf9440000c9e30f0ee725c579 /compiler/psub.pas | |
parent | 5a8f3caa7421563ce714a70060ea2906cac8cc42 (diff) | |
download | fpc-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.pas | 13 |
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; |