Просмотр исходного кода

Merged revisions 1477 via svnmerge from
http://[email protected]/svn/fpc/trunk

r1477 (peter)
* support procvar^, with procvar returning a procvardef in tp/mac modes

git-svn-id: branches/fixes_2_0@1512 -

peter 20 лет назад
Родитель
Сommit
05c8579e63
1 измененных файлов с 13 добавлено и 3 удалено
  1. 13 3
      compiler/pexpr.pas

+ 13 - 3
compiler/pexpr.pas

@@ -1702,6 +1702,18 @@ implementation
                _CARET:
                   begin
                     consume(_CARET);
+
+                    { support tp/mac procvar^ if the procvar returns a
+                      pointer type }
+                    if ((m_tp_procvar in aktmodeswitches) or
+                        (m_mac_procvar in aktmodeswitches)) and
+                       (p1.resulttype.def.deftype=procvardef) and
+                       (tprocvardef(p1.resulttype.def).rettype.def.deftype=pointerdef) then
+                      begin
+                        p1:=ccallnode.create_procvar(nil,p1);
+                        resulttypepass(p1);
+                      end;
+
                     if (p1.resulttype.def.deftype<>pointerdef) then
                       begin
                          { ^ as binary operator is a problem!!!! (FK) }
@@ -1712,9 +1724,7 @@ implementation
                          p1:=cerrornode.create;
                       end
                     else
-                      begin
-                         p1:=cderefnode.create(p1);
-                      end;
+                      p1:=cderefnode.create(p1);
                   end;
 
                _LECKKLAMMER: