pastojs: load include file from cache

git-svn-id: trunk@40173 -
This commit is contained in:
Mattias Gaertner 2018-11-01 23:41:06 +00:00
parent 571094912b
commit f116d51fd9
3 changed files with 8 additions and 5 deletions

View File

@ -2735,10 +2735,10 @@ begin
begin begin
if FIncludeStack.Count > 0 then if FIncludeStack.Count > 0 then
begin begin
CurSourceFile.{$ifdef pas2js}Destroy{$else}Free{$endif};
IncludeStackItem := IncludeStackItem :=
TIncludeStackItem(FIncludeStack[FIncludeStack.Count - 1]); TIncludeStackItem(FIncludeStack[FIncludeStack.Count - 1]);
FIncludeStack.Delete(FIncludeStack.Count - 1); FIncludeStack.Delete(FIncludeStack.Count - 1);
CurSourceFile.{$ifdef pas2js}Destroy{$else}Free{$endif};
FCurSourceFile := IncludeStackItem.SourceFile; FCurSourceFile := IncludeStackItem.SourceFile;
FCurFilename := IncludeStackItem.Filename; FCurFilename := IncludeStackItem.Filename;
FCurToken := IncludeStackItem.Token; FCurToken := IncludeStackItem.Token;
@ -3078,6 +3078,8 @@ end;
procedure TPascalScanner.HandleIncludeFile(Param: String); procedure TPascalScanner.HandleIncludeFile(Param: String);
var
NewSourceFile: TLineReader;
begin begin
if Length(Param)>1 then if Length(Param)>1 then
begin begin
@ -3088,10 +3090,12 @@ begin
Param:=copy(Param,2,length(Param)-2); Param:=copy(Param,2,length(Param)-2);
end; end;
end; end;
FCurSourceFile := FileResolver.FindIncludeFile(Param); NewSourceFile := FileResolver.FindIncludeFile(Param);
if not Assigned(FCurSourceFile) then if not Assigned(NewSourceFile) then
Error(nErrIncludeFileNotFound, SErrIncludeFileNotFound, [Param]); Error(nErrIncludeFileNotFound, SErrIncludeFileNotFound, [Param]);
PushStackItem; PushStackItem;
FCurSourceFile:=NewSourceFile;
FCurFilename := Param; FCurFilename := Param;
if FCurSourceFile is TFileLineReader then if FCurSourceFile is TFileLineReader then
FCurFilename := TFileLineReader(FCurSourceFile).Filename; // nicer error messages FCurFilename := TFileLineReader(FCurSourceFile).Filename; // nicer error messages

View File

@ -1276,7 +1276,6 @@ begin
Log.DebugLogWriteLn(PasModule.GetDeclaration(true)); Log.DebugLogWriteLn(PasModule.GetDeclaration(true));
end; end;
if{$IFDEF HasPas2jsFiler}PCUReader=nil{$ELSE}true{$ENDIF} then if{$IFDEF HasPas2jsFiler}PCUReader=nil{$ELSE}true{$ENDIF} then
begin begin
// read source module (instead of precompiled module) // read source module (instead of precompiled module)

View File

@ -1313,7 +1313,7 @@ begin
Filename:=FindIncludeFileName(aFilename); Filename:=FindIncludeFileName(aFilename);
if Filename='' then exit; if Filename='' then exit;
try try
Result := TFileLineReader.Create(Filename); Result:=FindSourceFile(Filename);
except except
// error is shown in the scanner, which has the context information // error is shown in the scanner, which has the context information
end; end;