Преглед изворни кода

* fixed assignment operator checking for typecast

peter пре 22 година
родитељ
комит
8b2dbde7c8
1 измењених фајлова са 7 додато и 24 уклоњено
  1. 7 24
      compiler/defcmp.pas

+ 7 - 24
compiler/defcmp.pas

@@ -947,16 +947,6 @@ implementation
                 begin
                   doconv:=tc_intf_2_guid;
                   eq:=te_convert_l1;
-                end
-               else
-                begin
-                  { assignment overwritten ?? }
-                  if check_operator then
-                   begin
-                     operatorpd:=assignment_overloaded(def_from,def_to);
-                     if assigned(operatorpd) then
-                      eq:=te_convert_operator;
-                   end;
                 end;
              end;
 
@@ -967,17 +957,7 @@ implementation
                else
                 { Just about everything can be converted to a formaldef...}
                 if not (def_from.deftype in [abstractdef,errordef]) then
-                  eq:=te_convert_l1
-               else
-                 begin
-                   { assignment overwritten ?? }
-                   if check_operator then
-                    begin
-                      operatorpd:=assignment_overloaded(def_from,def_to);
-                      if assigned(operatorpd) then
-                       eq:=te_convert_operator;
-                    end;
-                 end;
+                  eq:=te_convert_l1;
              end;
         end;
 
@@ -985,8 +965,8 @@ implementation
           there is a variant involved then we search also the := operator }
         if (eq=te_incompatible) and
            check_operator and
-           ((def_from.deftype=variantdef) or
-            (def_to.deftype=variantdef)) then
+           ((def_from.deftype in [objectdef,recorddef,arraydef,stringdef,variantdef]) or
+            (def_to.deftype in [objectdef,recorddef,arraydef,stringdef,variantdef])) then
           begin
             operatorpd:=assignment_overloaded(def_from,def_to);
             if assigned(operatorpd) then
@@ -1198,7 +1178,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.13  2002-12-29 18:15:19  peter
+  Revision 1.14  2003-01-03 17:16:04  peter
+    * fixed assignment operator checking for typecast
+
+  Revision 1.13  2002/12/29 18:15:19  peter
     * varargs is not checked in proc->procvar for delphi
 
   Revision 1.12  2002/12/29 14:57:50  peter