Browse Source

* Patch from Graeme to show deprecated et al modifiers after record def.

git-svn-id: trunk@15778 -
marco 15 years ago
parent
commit
a33ac5a082
1 changed files with 26 additions and 6 deletions
  1. 26 6
      packages/fcl-passrc/src/pastree.pp

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

@@ -68,7 +68,6 @@ resourcestring
 
 type
 
-
   // Visitor pattern.
   TPassTreeVisitor = class;
 
@@ -99,6 +98,8 @@ type
     FName: string;
     FParent: TPasElement;
     FHints : TPasMemberHints;
+  protected
+    procedure ProcessHints(const ASemiColonPrefix: boolean; var AResult: string); virtual;
   public
     SourceFilename: string;
     SourceLinenumber: Integer;
@@ -131,7 +132,7 @@ type
                  eopIn,eopIs,eopAs, eopSymmetricaldifference, // Specials
                  eopAddress, eopDeref, // Pointers
                  eopSubIdent); // SomeRec.A, A is subIdent of SomeRec
-  
+
   { TPasExpr }
 
   TPasExpr = class(TPasElement)
@@ -962,6 +963,9 @@ const
         '@','^',
         '.');
 
+  cPasMemberHint : array[TPasMemberHint] of string =
+      ( 'deprecated', 'library', 'platform', 'experimental', 'unimplemented' );
+
 implementation
 
 uses SysUtils;
@@ -1023,6 +1027,21 @@ end;
 
 { All other stuff: }
 
+procedure TPasElement.ProcessHints(const ASemiColonPrefix: boolean; var AResult: string);
+var
+  h: TPasMemberHint;
+begin
+  if Hints <> [] then
+  begin
+    if ASemiColonPrefix then
+      AResult := AResult + ';';
+    for h := Low(TPasMemberHint) to High(TPasMemberHint) do
+    begin
+      if h in Hints then
+        AResult := AResult + ' ' + cPasMemberHint[h] + ';'
+    end;
+  end;
+end;
 
 constructor TPasElement.Create(const AName: string; AParent: TPasElement);
 begin
@@ -1812,7 +1831,7 @@ Var
 
 begin
   S:=TStringList.Create;
-  T:=TstringList.Create;
+  T:=TStringList.Create;
   Try
     Temp:='record';
     If IsPacked then
@@ -1840,6 +1859,7 @@ begin
       end;
     S.Add('end');
     Result:=S.Text;
+    ProcessHints(False, Result);
   finally
     S.free;
     T.free;
@@ -1981,7 +2001,8 @@ begin
        Result:=Result+' implements '+ImplementsName;
     end;   
   If IsDefault then
-    Result:=Result+'; default'
+    Result:=Result+'; default';
+  ProcessHints(True, Result);
 end;
 
 Procedure TPasProcedure.GetModifiers(List : TStrings);
@@ -2534,7 +2555,6 @@ Function TRecordValues.GetDeclaration(Full : Boolean):AnsiString;
 
 Var
   I : Integer;
-
 begin
   For I:=0 to Length(Fields) do
     begin
@@ -2542,7 +2562,7 @@ begin
       Result:=Result+'; ';
     Result:=Result+Fields[I].Name+': '+Fields[i].ValueExp.getDeclaration(Full);
     end;
-  Result:='('+Result+')'  
+  Result:='('+Result+')';
 end;
 
 constructor TRecordValues.Create(AParent : TPasElement);