Browse Source

fcl-passrc: parser: check semicolon in arg list, bug #33742

git-svn-id: trunk@38997 -
Mattias Gaertner 7 years ago
parent
commit
faca63449f

+ 1 - 0
packages/fcl-passrc/src/pparser.pp

@@ -4457,6 +4457,7 @@ begin
       end;
       end;
     if CurToken = EndToken then
     if CurToken = EndToken then
       break;
       break;
+    CheckToken(tkSemicolon);
   end;
   end;
 end;
 end;
 
 

+ 1 - 1
packages/fcl-passrc/tests/tcclasstype.pas

@@ -1513,7 +1513,7 @@ Var
   A : TPasArgument;
   A : TPasArgument;
 begin
 begin
   StartVisibility(visPublished);
   StartVisibility(visPublished);
-  AddMember('Property Somethings[ACol : Integer,ARow : Integer] : integer Read GetF; default');
+  AddMember('Property Somethings[ACol : Integer; ARow : Integer] : integer Read GetF; default');
   ParseClass;
   ParseClass;
   AssertProperty(Property1,visPublished,'Somethings','GetF','','','',2,True,False);
   AssertProperty(Property1,visPublished,'Somethings','GetF','','','',2,True,False);
   AssertEquals('Published property',vispublished,Property1.Visibility);
   AssertEquals('Published property',vispublished,Property1.Visibility);

+ 14 - 2
packages/fcl-passrc/tests/tcresolver.pas

@@ -371,8 +371,9 @@ type
     Procedure TestProcedureResultFail;
     Procedure TestProcedureResultFail;
     Procedure TestProc_ArgVarPrecisionLossFail;
     Procedure TestProc_ArgVarPrecisionLossFail;
     Procedure TestProc_ArgVarTypeAliasObjFPC;
     Procedure TestProc_ArgVarTypeAliasObjFPC;
-    Procedure TestProc_ArgVarTypeAliasDelphi; // ToDo
-    Procedure TestProc_ArgVarTypeAliasDelphiMismatchFail; // ToDo
+    Procedure TestProc_ArgVarTypeAliasDelphi;
+    Procedure TestProc_ArgVarTypeAliasDelphiMismatchFail;
+    Procedure TestProc_ArgMissingSemicolonFail;
     Procedure TestProcOverload;
     Procedure TestProcOverload;
     Procedure TestProcOverloadImplDuplicateFail;
     Procedure TestProcOverloadImplDuplicateFail;
     Procedure TestProcOverloadImplDuplicate2Fail;
     Procedure TestProcOverloadImplDuplicate2Fail;
@@ -5615,6 +5616,17 @@ begin
     nIncompatibleTypeArgNoVarParamMustMatchExactly);
     nIncompatibleTypeArgNoVarParamMustMatchExactly);
 end;
 end;
 
 
+procedure TTestResolver.TestProc_ArgMissingSemicolonFail;
+begin
+  StartProgram(false);
+  Add([
+  'type TScalar = double;',
+  'procedure SinCos (var sinus: TScalar var cosinus: TScalar);',
+  'begin end;',
+  'begin']);
+  CheckParserException('Expected ";" at token "var" in file afile.pp at line 3 column 38',nParserExpectTokenError);
+end;
+
 procedure TTestResolver.TestProcOverload;
 procedure TTestResolver.TestProcOverload;
 var
 var
   El: TPasElement;
   El: TPasElement;