Browse Source

fcl-passrc: resolver: check arg access

git-svn-id: trunk@43224 -
Mattias Gaertner 5 years ago
parent
commit
d184c527b3
2 changed files with 13 additions and 0 deletions
  1. 2 0
      packages/fcl-passrc/src/pasresolver.pp
  2. 11 0
      packages/fcl-passrc/tests/tcresolver.pas

+ 2 - 0
packages/fcl-passrc/src/pasresolver.pp

@@ -12468,6 +12468,8 @@ begin
   {$IFDEF VerbosePasResolver}
   {$IFDEF VerbosePasResolver}
   writeln('TPasResolver.AddArgument ',GetObjName(El));
   writeln('TPasResolver.AddArgument ',GetObjName(El));
   {$ENDIF}
   {$ENDIF}
+  if El.Access in [argDefault,argConst,argVar,argOut] then
+    RaiseNotYetImplemented(20191018235644,El,AccessNames[El.Access]);
   CurScope:=TopScope;
   CurScope:=TopScope;
   if (CurScope=nil) then
   if (CurScope=nil) then
     RaiseInvalidScopeForElement(20160922163529,El);
     RaiseInvalidScopeForElement(20160922163529,El);

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

@@ -382,6 +382,7 @@ type
     // procs
     // procs
     Procedure TestProcParam;
     Procedure TestProcParam;
     Procedure TestProcParamAccess;
     Procedure TestProcParamAccess;
+    Procedure TestProcParamConstRefFail;
     Procedure TestFunctionResult;
     Procedure TestFunctionResult;
     Procedure TestProcedureResultFail;
     Procedure TestProcedureResultFail;
     Procedure TestProc_ArgVarPrecisionLossFail;
     Procedure TestProc_ArgVarPrecisionLossFail;
@@ -6102,6 +6103,16 @@ begin
   ParseProgram;
   ParseProgram;
 end;
 end;
 
 
+procedure TTestResolver.TestProcParamConstRefFail;
+begin
+  StartProgram(false);
+  Add('procedure Run(constref a: word);');
+  Add('begin');
+  Add('end;');
+  Add('begin');
+  CheckResolverException('not yet implemented: a:TPasArgument [20191018235644]',nNotYetImplemented);
+end;
+
 procedure TTestResolver.TestFunctionResult;
 procedure TTestResolver.TestFunctionResult;
 begin
 begin
   StartProgram(false);
   StartProgram(false);