Browse Source

* mereg from fixes-0_99_12

pierre 26 years ago
parent
commit
ca19d190a3
1 changed files with 35 additions and 31 deletions
  1. 35 31
      compiler/tccal.pas

+ 35 - 31
compiler/tccal.pas

@@ -692,37 +692,32 @@ implementation
                         wrong size is already checked (PFV) }
                       {if ((parsing_para_level=0) or (p^.left<>nil)) and
                          (nextprocsym=nil) then }
-                      if parsing_para_level=0 then
-                       begin
-                         if (not assigned(lastparatype)) or (not assigned(pt^.resulttype)) then
-                          internalerror(39393)
-                         else
-                          CGMessage3(type_e_wrong_parameter_type,tostr(lastpara),
-                             pt^.resulttype^.typename,lastparatype^.typename);
-                          aktcallprocsym^.write_parameter_lists;
-                          goto errorexit;
-                       end
+                      if (parsing_para_level>0) and
+                         (m_tp_procvar in aktmodeswitches) then
+                        begin
+                          { try to convert to procvar }
+                          p^.treetype:=loadn;
+                          p^.resulttype:=pprocsym(p^.symtableprocentry)^.definition;
+                          p^.symtableentry:=p^.symtableprocentry;
+                          p^.is_first:=false;
+                          p^.disposetyp:=dt_nothing;
+                          firstpass(p);
+                        end
                       else
-                       begin
-                         if (m_tp_procvar in aktmodeswitches) then
-                          begin
-                            { try to convert to procvar }
-                            p^.treetype:=loadn;
-                            p^.resulttype:=pprocsym(p^.symtableprocentry)^.definition;
-                            p^.symtableentry:=p^.symtableprocentry;
-                            p^.is_first:=false;
-                            p^.disposetyp:=dt_nothing;
-                            firstpass(p);
-                          end
-                         else
-                          begin
-                            { only return the resulttype, the check for equal will be done
-                              in the para parsing of the previous function }
-                            p^.resulttype:=pprocsym(p^.symtableprocentry)^.definition^.retdef;
-                          end;
-                         goto errorexit;
-                       end;
-                     end;
+                        begin
+                          if (not assigned(lastparatype)) or (not assigned(pt)) or
+                             (not assigned(pt^.resulttype)) then
+                            internalerror(39393)
+                          else
+                            begin
+                               aktfilepos:=pt^.fileinfo;
+                               CGMessage3(type_e_wrong_parameter_type,tostr(lastpara),
+                                 pt^.resulttype^.typename,lastparatype^.typename);
+                            end;
+                          aktcallprocsym^.write_parameter_lists;
+                        end;
+                       goto errorexit;
+                    end;
 
                    { if there are several choices left then for orddef }
                    { if a type is totally included in the other }
@@ -1172,7 +1167,16 @@ implementation
 end.
 {
   $Log$
-  Revision 1.51  1999-06-01 19:27:57  peter
+  Revision 1.52  1999-06-29 12:16:22  pierre
+   * mereg from fixes-0_99_12
+
+  Revision 1.51.2.2  1999/06/29 12:12:13  pierre
+   * fix for bug0272
+
+  Revision 1.51.2.1  1999/06/28 00:33:47  pierre
+   * better error position bug0269
+
+  Revision 1.51  1999/06/01 19:27:57  peter
     * better checks for procvar and methodpointer
 
   Revision 1.50  1999/06/01 14:46:00  peter