Browse Source

fc-passrc: fixed error message on empty file

git-svn-id: trunk@37981 -
Mattias Gaertner 7 years ago
parent
commit
c7ea58e86c

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

@@ -10237,7 +10237,12 @@ begin
     RaiseInternalError(20160922163535,'more than one root element Class="'+AClass.ClassName+'" Root='+GetObjName(FRootElement));
 
   if ASrcPos.FileName='' then
+    begin
+    { $IFDEF VerbosePasResolver}
+    writeln('TPasResolver.CreateElement ',AClass.ClassName,' Name=',AName,' Parent=',GetObjName(AParent),' (',ASrcPos.Row,',',ASrcPos.Column,')');
+    { $ENDIF}
     RaiseInternalError(20160922163541,'missing filename');
+    end;
   SrcY:=ASrcPos.Row;
   if StoreSrcColumns then
     begin

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

@@ -816,10 +816,17 @@ var
 begin
   {$IFDEF VerbosePasParser}
   writeln('TPasParser.ParseExc Token="',CurTokenText,'"');
-  //writeln('TPasParser.ParseExc ',Scanner.CurColumn,' ',Scanner.CurSourcePos.Column,' ',Scanner.CurTokenPos.Column);
+  //writeln('TPasParser.ParseExc ',Scanner.CurColumn,' ',Scanner.CurSourcePos.Column,' ',Scanner.CurTokenPos.Column,' ',Scanner.CurSourceFile.Filename);
   {$ENDIF}
   SetLastMsg(mtError,MsgNumber,Fmt,Args);
   p:=Scanner.CurTokenPos;
+  if p.FileName='' then
+    p:=Scanner.CurSourcePos;
+  if p.Row=0 then
+    begin
+    p.Row:=1;
+    p.Column:=1;
+    end;
   raise EParserError.Create(SafeFormat(SParserErrorAtToken,
     [FLastMsg, CurTokenName, p.FileName, p.Row, p.Column])
     {$ifdef addlocation}+' ('+IntToStr(p.Row)+' '+IntToStr(p.Column)+')'{$endif},
@@ -2669,6 +2676,8 @@ begin
       ParseProgram(Module);
     tkLibrary:
       ParseLibrary(Module);
+    tkEOF:
+      CheckToken(tkprogram);
   else
     UngetToken;
     ParseProgram(Module,True);

+ 1 - 3
packages/fcl-passrc/src/pscanner.pp

@@ -2350,7 +2350,7 @@ begin
         Result := FCurToken;
         end
       else
-        break
+        break;
       end;
     tkWhiteSpace,
     tkLineEnding:
@@ -3062,8 +3062,6 @@ var
   TokenStart: PChar;
   i: TToken;
   OldLength, SectionLength, NestingLevel, Index: Integer;
-
-
 begin
   Result:=tkLineEnding;
   if TokenStr = nil then