diff --git a/packages/fcl-passrc/src/pparser.pp b/packages/fcl-passrc/src/pparser.pp index 82079455c5..6544e182c0 100644 --- a/packages/fcl-passrc/src/pparser.pp +++ b/packages/fcl-passrc/src/pparser.pp @@ -3618,7 +3618,10 @@ begin tkConst: SetBlock(declConst); tkexports: - SetBlock(declExports); + if Declarations is TPasSection then + SetBlock(declExports) + else + ParseExcTokenError(TokenInfos[tkbegin]); tkResourcestring: if Declarations is TPasSection then SetBlock(declResourcestring) diff --git a/packages/fcl-passrc/tests/tcresolver.pas b/packages/fcl-passrc/tests/tcresolver.pas index 8ef19f6ff0..643fd0692b 100644 --- a/packages/fcl-passrc/tests/tcresolver.pas +++ b/packages/fcl-passrc/tests/tcresolver.pas @@ -986,6 +986,7 @@ type Procedure TestLibrary_ExportFunc_NameIntFail; Procedure TestLibrary_ExportFunc_IndexStringFail; Procedure TestLibrary_ExportVar; // ToDo + Procedure TestLibrary_ExportLocFuncFail; Procedure TestLibrary_Initialization_Finalization; Procedure TestLibrary_ExportFuncOverloadFail; Procedure TestLibrary_UnitExports; @@ -18852,6 +18853,20 @@ begin ParseLibrary; end; +procedure TTestResolver.TestLibrary_ExportLocFuncFail; +begin + StartLibrary(false); + Add([ + 'procedure Run;', + 'exports', + ' Run;', + 'begin', + 'end;', + 'begin', + '']); + CheckParserException('Expected "begin"',nParserExpectTokenError); +end; + procedure TTestResolver.TestLibrary_Initialization_Finalization; begin StartLibrary(false);