Browse Source

* Support for final modifier

git-svn-id: trunk@35916 -
michael 8 years ago
parent
commit
75e5467ba8
2 changed files with 13 additions and 2 deletions
  1. 2 2
      packages/fcl-passrc/src/pastree.pp
  2. 11 0
      packages/fcl-passrc/tests/tcclasstype.pas

+ 2 - 2
packages/fcl-passrc/src/pastree.pp

@@ -842,7 +842,7 @@ type
                         pmExport, pmOverload, pmMessage, pmReintroduce,
                         pmInline,pmAssembler, pmPublic,
                         pmCompilerProc,pmExternal,pmForward, pmDispId, 
-                        pmNoReturn, pmfar);
+                        pmNoReturn, pmfar, pmFinal);
   TProcedureModifiers = Set of TProcedureModifier;
   TProcedureMessageType = (pmtNone,pmtInteger,pmtString);
                         
@@ -1430,7 +1430,7 @@ const
                    'export', 'overload', 'message', 'reintroduce',
                    'inline','assembler','public',
                    'compilerproc','external','forward','dispid',
-                   'noreturn','far');
+                   'noreturn','far','final');
 
   VariableModifierNames : Array[TVariableModifier] of string
      = ('cvar', 'external', 'public', 'export', 'class', 'static');

+ 11 - 0
packages/fcl-passrc/tests/tcclasstype.pas

@@ -109,6 +109,7 @@ type
     Procedure TestMethodVirtual;
     Procedure TestMethodVirtualSemicolon;
     Procedure TestMethodVirtualAbstract;
+    procedure TestMethodVirtualAbstractFinal;
     Procedure TestMethodOverride;
     procedure TestMethodDynamic;
     procedure TestMethodReintroduce;
@@ -1003,6 +1004,16 @@ begin
   AssertEquals('Default calling convention',ccDefault, Method1.ProcType.CallingConvention);
 end;
 
+procedure TTestClassType.TestMethodVirtualAbstractFinal;
+begin
+  AddMember('Procedure DoSomething(A : Integer) virtual; abstract; final');
+  ParseClass;
+  DefaultMethod;
+  AssertEquals('Default visibility',visDefault,Method1.Visibility);
+  AssertEquals('Virtual, abstract modifiers',[pmVirtual,pmAbstract,pmFinal],Method1.Modifiers);
+  AssertEquals('Default calling convention',ccDefault, Method1.ProcType.CallingConvention);
+end;
+
 
 procedure TTestClassType.TestMethodOverride;
 begin