Browse Source

fcl-passrc: resolver: if then <empty> else ;

git-svn-id: trunk@39928 -
Mattias Gaertner 6 years ago
parent
commit
15dfb9eed3
2 changed files with 13 additions and 0 deletions
  1. 1 0
      packages/fcl-passrc/src/pasresolver.pp
  2. 12 0
      packages/fcl-passrc/tests/tcresolver.pas

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

@@ -13882,6 +13882,7 @@ begin
       AddInitialFinalizationSection(TFinalizationSection(El))
       AddInitialFinalizationSection(TFinalizationSection(El))
     else if AClass.InheritsFrom(TPasImplBlock) then
     else if AClass.InheritsFrom(TPasImplBlock) then
       // resolved when finished
       // resolved when finished
+    else if AClass=TPasImplCommand then
     else if AClass=TPasUnresolvedUnitRef then
     else if AClass=TPasUnresolvedUnitRef then
       RaiseMsg(20171018121900,nCantFindUnitX,sCantFindUnitX,[AName],El)
       RaiseMsg(20171018121900,nCantFindUnitX,sCantFindUnitX,[AName],El)
     else
     else

+ 12 - 0
packages/fcl-passrc/tests/tcresolver.pas

@@ -340,6 +340,7 @@ type
     Procedure TestStatementsRefs;
     Procedure TestStatementsRefs;
     Procedure TestRepeatUntilNonBoolFail;
     Procedure TestRepeatUntilNonBoolFail;
     Procedure TestWhileDoNonBoolFail;
     Procedure TestWhileDoNonBoolFail;
+    Procedure TestIfThen;
     Procedure TestIfThenNonBoolFail;
     Procedure TestIfThenNonBoolFail;
     Procedure TestIfAssignMissingSemicolonFail;
     Procedure TestIfAssignMissingSemicolonFail;
     Procedure TestForLoopVarNonVarFail;
     Procedure TestForLoopVarNonVarFail;
@@ -5082,6 +5083,17 @@ begin
   CheckResolverException('Boolean expected, but Longint found',nXExpectedButYFound);
   CheckResolverException('Boolean expected, but Longint found',nXExpectedButYFound);
 end;
 end;
 
 
+procedure TTestResolver.TestIfThen;
+begin
+  StartProgram(false);
+  Add([
+  'var b: boolean;',
+  'begin',
+  '  if b then ;',
+  '  if b then else ;']);
+  ParseProgram;
+end;
+
 procedure TTestResolver.TestIfThenNonBoolFail;
 procedure TTestResolver.TestIfThenNonBoolFail;
 begin
 begin
   StartProgram(false);
   StartProgram(false);