Browse Source

--- Merging r43688 into '.':
U packages/fcl-passrc/src/pasresolver.pp
U packages/fcl-passrc/tests/tcresolver.pas
--- Recording mergeinfo for merge of r43688 into '.':
U .
--- Merging r43872 into '.':
U packages/fcl-passrc/src/pastree.pp
U packages/fcl-passrc/src/pparser.pp
--- Recording mergeinfo for merge of r43872 into '.':
G .

# revisions: 43688,43872

git-svn-id: branches/fixes_3_2@44015 -

marco 5 years ago
parent
commit
07940fc2ef

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

@@ -8364,7 +8364,7 @@ procedure TPasResolver.FinishArgument(El: TPasArgument);
 var
   IsDelphi: Boolean;
 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);
   if El.ArgType<>nil then
     CheckUseAsType(El.ArgType,20190123100049,El);

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

@@ -1557,6 +1557,7 @@ type
   end;
 
   { TPasImplAssign }
+
   TAssignKind = (akDefault,akAdd,akMinus,akMul,akDivision);
   TPasImplAssign = class (TPasImplStatement)
   public
@@ -1594,8 +1595,8 @@ type
     procedure ForEachCall(const aMethodCall: TOnForEachPasElement;
       const Arg: Pointer); override;
   public
-    FinallyExcept: TPasImplTryHandler;
-    ElseBranch: TPasImplTryExceptElse;
+    FinallyExcept: TPasImplTryHandler; // not in Elements
+    ElseBranch: TPasImplTryExceptElse; // not in Elements
   end;
 
   TPasImplTryHandler = class(TPasImplBlock)

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

@@ -5938,9 +5938,9 @@ begin
             CloseBlock;
             CloseStatement(false);
           end;
-          // Case ... else without semicolon in front.
         end else if (CurBlock is TPasImplCaseStatement) then
         begin
+          // Case ... else without semicolon in front.
           UngetToken;
           CloseStatement(False);
           break;
@@ -6132,7 +6132,7 @@ begin
                   //writeln(i,'CASE value="',Expr,'" Token=',CurTokenText);
                   if CurBlock is TPasImplCaseStatement then
                     begin
-                    TPasImplCaseStatement(CurBlock).Expressions.Add(Left);
+                    TPasImplCaseStatement(CurBlock).AddExpression(Left);
                     Left:=nil;
                     end
                   else

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

@@ -383,7 +383,7 @@ type
     // procs
     Procedure TestProcParam;
     Procedure TestProcParamAccess;
-    Procedure TestProcParamConstRefFail;
+    Procedure TestProcParamConstRef;
     Procedure TestFunctionResult;
     Procedure TestProcedureResultFail;
     Procedure TestProc_ArgVarPrecisionLossFail;
@@ -6129,14 +6129,15 @@ begin
   ParseProgram;
 end;
 
-procedure TTestResolver.TestProcParamConstRefFail;
+procedure TTestResolver.TestProcParamConstRef;
 begin
   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;
 
 procedure TTestResolver.TestFunctionResult;