Browse Source

fcl-passrc: parser: give error on class field without var

git-svn-id: trunk@41292 -
Mattias Gaertner 6 years ago
parent
commit
9f5bc872be
2 changed files with 19 additions and 1 deletions
  1. 6 1
      packages/fcl-passrc/src/pparser.pp
  2. 13 0
      packages/fcl-passrc/tests/tcresolver.pas

+ 6 - 1
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:

+ 13 - 0
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);