Browse Source

* noreturn procedure modifier (bug ID 31285)

git-svn-id: trunk@35361 -
michael 8 years ago
parent
commit
a51efe50b7
2 changed files with 9 additions and 2 deletions
  1. 2 2
      packages/fcl-passrc/src/pastree.pp
  2. 7 0
      packages/fcl-passrc/tests/tcprocfunc.pas

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

@@ -810,7 +810,7 @@ type
   TProcedureModifier = (pmVirtual, pmDynamic, pmAbstract, pmOverride,
   TProcedureModifier = (pmVirtual, pmDynamic, pmAbstract, pmOverride,
                         pmExport, pmOverload, pmMessage, pmReintroduce,
                         pmExport, pmOverload, pmMessage, pmReintroduce,
                         pmStatic,pmInline,pmAssembler,pmVarargs, pmPublic,
                         pmStatic,pmInline,pmAssembler,pmVarargs, pmPublic,
-                        pmCompilerProc,pmExternal,pmForward, pmdispid);
+                        pmCompilerProc,pmExternal,pmForward, pmdispid, pmnoreturn);
   TProcedureModifiers = Set of TProcedureModifier;
   TProcedureModifiers = Set of TProcedureModifier;
   TProcedureMessageType = (pmtNone,pmtInteger,pmtString);
   TProcedureMessageType = (pmtNone,pmtInteger,pmtString);
                         
                         
@@ -1390,7 +1390,7 @@ const
                 = ('virtual', 'dynamic','abstract', 'override',
                 = ('virtual', 'dynamic','abstract', 'override',
                    'export', 'overload', 'message', 'reintroduce',
                    'export', 'overload', 'message', 'reintroduce',
                    'static','inline','assembler','varargs', 'public',
                    'static','inline','assembler','varargs', 'public',
-                   'compilerproc','external','forward','dispid');
+                   'compilerproc','external','forward','dispid','noreturn');
 
 
 procedure ReleaseAndNil(var El: TPasElement); overload;
 procedure ReleaseAndNil(var El: TPasElement); overload;
 
 

+ 7 - 0
packages/fcl-passrc/tests/tcprocfunc.pas

@@ -132,6 +132,7 @@ type
     Procedure TestProcedureCdeclForward;
     Procedure TestProcedureCdeclForward;
     Procedure TestFunctionCDeclForward;
     Procedure TestFunctionCDeclForward;
     Procedure TestProcedureCompilerProc;
     Procedure TestProcedureCompilerProc;
+    Procedure TestProcedureNoReturn;
     Procedure TestFunctionCompilerProc;
     Procedure TestFunctionCompilerProc;
     Procedure TestProcedureCDeclCompilerProc;
     Procedure TestProcedureCDeclCompilerProc;
     Procedure TestFunctionCDeclCompilerProc;
     Procedure TestFunctionCDeclCompilerProc;
@@ -961,6 +962,12 @@ begin
   AssertProc([pmCompilerProc],ccDefault,0);
   AssertProc([pmCompilerProc],ccDefault,0);
 end;
 end;
 
 
+procedure TTestProcedureFunction.TestProcedureNoReturn;
+begin
+  ParseProcedure(';noreturn;','');
+  AssertProc([pmnoreturn],ccDefault,0);
+end;
+
 procedure TTestProcedureFunction.TestFunctionCompilerProc;
 procedure TTestProcedureFunction.TestFunctionCompilerProc;
 begin
 begin
   AddDeclaration('function A : Integer; compilerproc');
   AddDeclaration('function A : Integer; compilerproc');