Browse Source

+ warn for uninitialized out parameters when dfa is enabled

git-svn-id: trunk@25977 -
florian 11 years ago
parent
commit
cca520abd9
1 changed files with 11 additions and 2 deletions
  1. 11 2
      compiler/psub.pas

+ 11 - 2
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;