Browse Source

* treat all "uninitialized" hints as warnings on JVM platforms, because
they generally result in fatal run time errors there

git-svn-id: trunk@22571 -

Jonas Maebe 12 năm trước cách đây
mục cha
commit
76b0ee9925
1 tập tin đã thay đổi với 8 bổ sung2 xóa
  1. 8 2
      compiler/htypechk.pas

+ 8 - 2
compiler/htypechk.pas

@@ -1190,14 +1190,20 @@ implementation
                                    begin
                                    begin
                                      if tloadnode(p).symtable.symtabletype=localsymtable then
                                      if tloadnode(p).symtable.symtabletype=localsymtable then
                                        begin
                                        begin
-                                         if (vsf_use_hints in varstateflags) then
+                                         { on the JVM, an uninitialized var-parameter
+                                           is just as fatal as a nil pointer dereference }
+                                         if (vsf_use_hints in varstateflags) and
+                                            not(target_info.system in systems_jvm) then
                                            CGMessagePos1(p.fileinfo,sym_h_uninitialized_local_variable,hsym.realname)
                                            CGMessagePos1(p.fileinfo,sym_h_uninitialized_local_variable,hsym.realname)
                                          else
                                          else
                                            CGMessagePos1(p.fileinfo,sym_w_uninitialized_local_variable,hsym.realname);
                                            CGMessagePos1(p.fileinfo,sym_w_uninitialized_local_variable,hsym.realname);
                                        end
                                        end
                                      else
                                      else
                                        begin
                                        begin
-                                         if (vsf_use_hints in varstateflags) then
+                                         { on the JVM, an uninitialized var-parameter
+                                           is just as fatal as a nil pointer dereference }
+                                         if (vsf_use_hints in varstateflags) and
+                                            not(target_info.system in systems_jvm) then
                                            CGMessagePos1(p.fileinfo,sym_h_uninitialized_variable,hsym.realname)
                                            CGMessagePos1(p.fileinfo,sym_h_uninitialized_variable,hsym.realname)
                                          else
                                          else
                                            CGMessagePos1(p.fileinfo,sym_w_uninitialized_variable,hsym.realname);
                                            CGMessagePos1(p.fileinfo,sym_w_uninitialized_variable,hsym.realname);