Browse Source

fcl-passrc: resolver: check arg access

mattias 5 years ago
parent
commit
2ec7063007

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

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

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

@@ -381,6 +381,7 @@ type
     // procs
     Procedure TestProcParam;
     Procedure TestProcParamAccess;
+    Procedure TestProcParamConstRefFail;
     Procedure TestFunctionResult;
     Procedure TestProcedureResultFail;
     Procedure TestProc_ArgVarPrecisionLossFail;
@@ -5986,6 +5987,16 @@ begin
   ParseProgram;
 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;
 begin
   StartProgram(false);