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

* Patch from Simone Tacconi to fix WriteProc. Fixes issue #41100

Michaël Van Canneyt пре 7 месеци
родитељ
комит
c10e57f1d8
2 измењених фајлова са 7 додато и 10 уклоњено
  1. 6 1
      packages/fcl-passrc/src/pastree.pp
  2. 1 9
      packages/fcl-passrc/src/paswrite.pp

+ 6 - 1
packages/fcl-passrc/src/pastree.pp

@@ -2310,6 +2310,7 @@ function TInlineSpecializeExpr.GetDeclaration(full: Boolean): TPasTreeString;
 var
   i: Integer;
   aParam: TPasElement;
+  lTmp : String;
 begin
   Result:='specialize '+NameExpr.GetDeclaration(false)+'<';
   for i:=0 to Params.Count-1 do
@@ -2320,7 +2321,11 @@ begin
     if aParam is TPasMembersType then
       Result:=Result+aParam.FullName
     else
-      Result:=Result+aParam.GetDeclaration(false);
+      begin
+      lTmp:=aParam.GetDeclaration(aParam is TPasUnresolvedTypeRef);
+      lTmp[1]:=UpCase(lTmp[1]);
+      Result:=Result+lTmp;
+      end;
     end;
   Result:=Result+'>';
   if full then ;

+ 1 - 9
packages/fcl-passrc/src/paswrite.pp

@@ -934,15 +934,7 @@ begin
     IsImpl:=FInImplementation;
   if FInImplementation and not forcebody and (Assigned(AProc.LibraryExpr) or Assigned(AProc.LibrarySymbolName)) and HasOption(woSkipPrivateExternals)  then
     Exit;
-  Add(AProc.TypeName + ' ' + NamePrefix+AProc.SafeName);
-  if Assigned(AProc.ProcType) and (AProc.ProcType.Args.Count > 0) then
-    AddProcArgs(AProc.ProcType.Args) ;
-  if Assigned(AProc.ProcType) and
-    (AProc.ProcType.ClassType = TPasFunctionType) then
-  begin
-    Add(': ');
-    WriteType(TPasFunctionType(AProc.ProcType).ResultEl.ResultType,False);
-  end;
+  Add(AProc.GetDeclaration(True));
   Add(';');
   // delphi compatible order for example: procedure foo; reintroduce; overload; static;
   if not IsImpl and AProc.IsReintroduced then