Browse Source

* Fix from Mattias Gaertner to catch EScannerError and setting FLast* fields

git-svn-id: trunk@35580 -
michael 8 years ago
parent
commit
0a2868b450
1 changed files with 14 additions and 3 deletions
  1. 14 3
      packages/fcl-passrc/src/pparser.pp

+ 14 - 3
packages/fcl-passrc/src/pparser.pp

@@ -832,8 +832,20 @@ begin
       until not (FCurToken in WhitespaceTokensToIgnore);
       until not (FCurToken in WhitespaceTokensToIgnore);
     except
     except
       on e: EScannerError do
       on e: EScannerError do
-        raise EParserError.Create(e.Message,
-          Scanner.CurFilename, Scanner.CurRow, Scanner.CurColumn);
+        begin
+        if po_KeepScannerError in Options then
+          raise e
+        else
+          begin
+          FLastMsgType := mtError;
+          FLastMsgNumber := Scanner.LastMsgNumber;
+          FLastMsgPattern := Scanner.LastMsgPattern;
+          FLastMsg := Scanner.LastMsg;
+          FLastMsgArgs := Scanner.LastMsgArgs;
+          raise EParserError.Create(e.Message,
+            Scanner.CurFilename, Scanner.CurRow, Scanner.CurColumn);
+          end;
+        end;
     end;
     end;
     FCurTokenString := Scanner.CurTokenString;
     FCurTokenString := Scanner.CurTokenString;
     FTokenBuffer[FTokenBufferSize] := FCurToken;
     FTokenBuffer[FTokenBufferSize] := FCurToken;
@@ -3562,7 +3574,6 @@ Var
   PM : TProcedureModifier;
   PM : TProcedureModifier;
   Done: Boolean;
   Done: Boolean;
   ResultEl: TPasResultElement;
   ResultEl: TPasResultElement;
-  I : Integer;
   OK : Boolean;
   OK : Boolean;
 
 
 begin
 begin