Browse Source

fcl-passrc: resolver: allow constref

mattias 5 years ago
parent
commit
24c18cc178

+ 1 - 1
compiler/packages/fcl-passrc/src/pasresolver.pp

@@ -7302,7 +7302,7 @@ end;
 
 
 procedure TPasResolver.FinishArgument(El: TPasArgument);
 procedure TPasResolver.FinishArgument(El: TPasArgument);
 begin
 begin
-  if not (El.Access in [argDefault,argConst,argVar,argOut]) then
+  if not (El.Access in [argDefault,argConst,argVar,argOut,argConstRef]) then
     RaiseMsg(20191018235644,nNotYetImplemented,sNotYetImplemented,[AccessDescriptions[El.Access]],El);
     RaiseMsg(20191018235644,nNotYetImplemented,sNotYetImplemented,[AccessDescriptions[El.Access]],El);
   if El.ArgType<>nil then
   if El.ArgType<>nil then
     CheckUseAsType(El.ArgType,20190123100049,El);
     CheckUseAsType(El.ArgType,20190123100049,El);

+ 8 - 7
compiler/packages/fcl-passrc/tests/tcresolver.pas

@@ -381,7 +381,7 @@ type
     // procs
     // procs
     Procedure TestProcParam;
     Procedure TestProcParam;
     Procedure TestProcParamAccess;
     Procedure TestProcParamAccess;
-    Procedure TestProcParamConstRefFail;
+    Procedure TestProcParamConstRef;
     Procedure TestFunctionResult;
     Procedure TestFunctionResult;
     Procedure TestProcedureResultFail;
     Procedure TestProcedureResultFail;
     Procedure TestProc_ArgVarPrecisionLossFail;
     Procedure TestProc_ArgVarPrecisionLossFail;
@@ -5987,14 +5987,15 @@ begin
   ParseProgram;
   ParseProgram;
 end;
 end;
 
 
-procedure TTestResolver.TestProcParamConstRefFail;
+procedure TTestResolver.TestProcParamConstRef;
 begin
 begin
   StartProgram(false);
   StartProgram(false);
-  Add('procedure Run(constref a: word);');
-  Add('begin');
-  Add('end;');
-  Add('begin');
-  CheckResolverException('not yet implemented: constref',nNotYetImplemented);
+  Add([
+  'procedure Run(constref a: word);',
+  'begin',
+  'end;',
+  'begin']);
+  ParseProgram;
 end;
 end;
 
 
 procedure TTestResolver.TestFunctionResult;
 procedure TTestResolver.TestFunctionResult;