From 9f5bc872beeb8e8afd282fe36d981990f31cd323 Mon Sep 17 00:00:00 2001 From: Mattias Gaertner Date: Sun, 10 Feb 2019 22:59:15 +0000 Subject: [PATCH] fcl-passrc: parser: give error on class field without var git-svn-id: trunk@41292 - --- packages/fcl-passrc/src/pparser.pp | 7 ++++++- packages/fcl-passrc/tests/tcresolver.pas | 13 +++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/fcl-passrc/src/pparser.pp b/packages/fcl-passrc/src/pparser.pp index 8ba5953999..a09d98ea51 100644 --- a/packages/fcl-passrc/src/pparser.pp +++ b/packages/fcl-passrc/src/pparser.pp @@ -6670,7 +6670,12 @@ begin CurSection:=stNone else begin - if not haveClass then + if haveClass then + begin + if LastToken=tkclass then + ParseExcTokenError('procedure or function'); + end + else SaveComments; Case CurSection of stType: diff --git a/packages/fcl-passrc/tests/tcresolver.pas b/packages/fcl-passrc/tests/tcresolver.pas index c3a01ccc63..191b9eb4d4 100644 --- a/packages/fcl-passrc/tests/tcresolver.pas +++ b/packages/fcl-passrc/tests/tcresolver.pas @@ -608,6 +608,7 @@ type Procedure TestClass_VarExternal; Procedure TestClass_WarnOverrideLowerVisibility; Procedure TestClass_Const; + Procedure TestClass_ClassMissingVarFail; Procedure TestClass_ClassConstFail; Procedure TestClass_Enumerator; Procedure TestClass_EnumeratorFunc; @@ -10772,6 +10773,18 @@ begin CheckResolverUnexpectedHints; end; +procedure TTestResolver.TestClass_ClassMissingVarFail; +begin + StartProgram(false); + Add([ + 'type', + ' TObject = class', + ' class c: word;', + ' end;', + 'begin']); + CheckParserException('Expected "procedure or function"',nParserExpectTokenError); +end; + procedure TTestResolver.TestClass_ClassConstFail; begin StartProgram(false);