Sfoglia il codice sorgente

Merged revisions 11677 via svnmerge from
svn+ssh://[email protected]/FPC/svn/fpc/trunk

........
r11677 | michael | 2008-08-31 23:25:21 +0200 (Sun, 31 Aug 2008) | 1 line

* Added support for interface delegation (Implements)
........

git-svn-id: branches/fixes_2_2@11925 -

marco 17 anni fa
parent
commit
d979fc098e

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

@@ -357,7 +357,7 @@ type
     function GetDeclaration(full : boolean) : string; override;
   public
     Args: TList;        // List of TPasArgument objects
-    IndexValue, ReadAccessorName, WriteAccessorName,
+    IndexValue, ReadAccessorName, WriteAccessorName,ImplementsName,
       StoredAccessorName, DefaultValue: string;
     IsDefault, IsNodefault: Boolean;
   end;
@@ -1428,7 +1428,11 @@ begin
   else
     S:=' ';
   If Full then
+    begin
     Result:=Name+S+': '+Result;
+    If (ImplementsName<>'') then
+       Result:=Result+' implements '+ImplementsName;
+    end;   
   If IsDefault then
     Result:=Result+'; default'
 end;

+ 3 - 0
packages/fcl-passrc/src/pparser.pp

@@ -1725,6 +1725,9 @@ begin
     if (CurToken = tkIdentifier) and (UpperCase(CurTokenText) = 'WRITE') then
       TPasProperty(Element).WriteAccessorName := GetAccessorName
     else
+    if (CurToken = tkIdentifier) and (UpperCase(CurTokenText) = 'IMPLEMENTS') then
+      TPasProperty(Element).ImplementsName := GetAccessorName
+    else
 //    not write accessor will be recheck for another token
       UngetToken;