From f8d57c149c5afc1cd55cbb3c9603383da6db2587 Mon Sep 17 00:00:00 2001 From: mattias Date: Fri, 18 Oct 2019 22:13:09 +0000 Subject: [PATCH] fcl-passrc: resolver: check arg access --- compiler/packages/fcl-passrc/src/pasresolver.pp | 4 ++-- compiler/packages/fcl-passrc/tests/tcresolver.pas | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/compiler/packages/fcl-passrc/src/pasresolver.pp b/compiler/packages/fcl-passrc/src/pasresolver.pp index 67e6557..d726c2b 100644 --- a/compiler/packages/fcl-passrc/src/pasresolver.pp +++ b/compiler/packages/fcl-passrc/src/pasresolver.pp @@ -7302,6 +7302,8 @@ end; procedure TPasResolver.FinishArgument(El: TPasArgument); begin + if not (El.Access in [argDefault,argConst,argVar,argOut]) then + RaiseMsg(20191018235644,nNotYetImplemented,sNotYetImplemented,[AccessDescriptions[El.Access]],El); if El.ArgType<>nil then CheckUseAsType(El.ArgType,20190123100049,El); if El.ValueExpr<>nil then @@ -10537,8 +10539,6 @@ 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); diff --git a/compiler/packages/fcl-passrc/tests/tcresolver.pas b/compiler/packages/fcl-passrc/tests/tcresolver.pas index 8e51be3..5033ab0 100644 --- a/compiler/packages/fcl-passrc/tests/tcresolver.pas +++ b/compiler/packages/fcl-passrc/tests/tcresolver.pas @@ -5994,7 +5994,7 @@ begin Add('begin'); Add('end;'); Add('begin'); - CheckResolverException('not yet implemented: a:TPasArgument [20191018235644]',nNotYetImplemented); + CheckResolverException('not yet implemented: constref',nNotYetImplemented); end; procedure TTestResolver.TestFunctionResult; @@ -7167,7 +7167,7 @@ begin Add('procedure {#ProcA}ProcA(var {#A}A); forward;'); Add('procedure {#ProcB}ProcB(const {#B}B); forward;'); Add('procedure {#ProcC}ProcC(out {#C}C); forward;'); - Add('procedure {#ProcD}ProcD(constref {#D}D); forward;'); + //Add('procedure {#ProcD}ProcD(constref {#D}D); forward;'); Add('procedure ProcA(var A);'); Add('begin'); Add('end;'); @@ -7177,15 +7177,15 @@ begin Add('procedure ProcC(out C);'); Add('begin'); Add('end;'); - Add('procedure ProcD(constref D);'); - Add('begin'); - Add('end;'); + //Add('procedure ProcD(constref D);'); + //Add('begin'); + //Add('end;'); Add('var i: longint;'); Add('begin'); Add(' {@ProcA}ProcA(i);'); Add(' {@ProcB}ProcB(i);'); Add(' {@ProcC}ProcC(i);'); - Add(' {@ProcD}ProcD(i);'); + //Add(' {@ProcD}ProcD(i);'); ParseProgram; end;