mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-19 20:09:17 +02:00
* Some fixes to compile with pas2js
This commit is contained in:
parent
a7016a9ea0
commit
32137ac160
@ -141,7 +141,8 @@ begin
|
|||||||
TStreamResolver(Fresolver).AddStream(FileName,Stream);
|
TStreamResolver(Fresolver).AddStream(FileName,Stream);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
FResolver:=TFileResolver.Create;
|
{$IFNDEF PAS2JS}FResolver:=TFileResolver.Create{$ENDIF}
|
||||||
|
;
|
||||||
D:=ExtractFilePath(FileName);
|
D:=ExtractFilePath(FileName);
|
||||||
If (D='') then
|
If (D='') then
|
||||||
D:='.';
|
D:='.';
|
||||||
|
@ -507,9 +507,7 @@ type
|
|||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
FPos : Integer;
|
FPos : Integer;
|
||||||
public
|
public
|
||||||
{$ifdef HasStreams}
|
|
||||||
Procedure InitFromStream(AStream : TStream);
|
Procedure InitFromStream(AStream : TStream);
|
||||||
{$endif}
|
|
||||||
Procedure InitFromString(const s: TPasScannerString);
|
Procedure InitFromString(const s: TPasScannerString);
|
||||||
function IsEOF: Boolean; override;
|
function IsEOF: Boolean; override;
|
||||||
function ReadLine: TPasScannerString; override;
|
function ReadLine: TPasScannerString; override;
|
||||||
@ -594,7 +592,6 @@ type
|
|||||||
end;
|
end;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
{$ifdef fpc}
|
|
||||||
{ TStreamResolver }
|
{ TStreamResolver }
|
||||||
|
|
||||||
TStreamResolver = class(TBaseFileResolver)
|
TStreamResolver = class(TBaseFileResolver)
|
||||||
@ -617,7 +614,7 @@ type
|
|||||||
Property OwnsStreams : Boolean Read FOwnsStreams write SetOwnsStreams;
|
Property OwnsStreams : Boolean Read FOwnsStreams write SetOwnsStreams;
|
||||||
Property Streams: TStringList read FStreams;
|
Property Streams: TStringList read FStreams;
|
||||||
end;
|
end;
|
||||||
{$endif}
|
|
||||||
|
|
||||||
const
|
const
|
||||||
CondDirectiveBool: array[boolean] of TPasScannerString = (
|
CondDirectiveBool: array[boolean] of TPasScannerString = (
|
||||||
@ -2832,20 +2829,47 @@ end;
|
|||||||
|
|
||||||
{ TStreamLineReader }
|
{ TStreamLineReader }
|
||||||
|
|
||||||
{$ifdef HasStreams}
|
|
||||||
Procedure TStreamLineReader.InitFromStream(AStream : TStream);
|
Procedure TStreamLineReader.InitFromStream(AStream : TStream);
|
||||||
|
|
||||||
|
{$IFDEF PAS2JS}
|
||||||
|
function BufferToString(aBuffer: TBytes): String;
|
||||||
|
|
||||||
|
var
|
||||||
|
a : TJSUint16Array;
|
||||||
|
i,len: Integer;
|
||||||
|
|
||||||
|
begin
|
||||||
|
Result:=''; // Silence warning
|
||||||
|
len:=Length(aBuffer);
|
||||||
|
a:=TJSUint16Array.New(Len);
|
||||||
|
for I:=0 to Len-1 do
|
||||||
|
a[i]:=aBuffer[i];
|
||||||
|
if a<>nil then
|
||||||
|
Result:=String(TJSFunction(@TJSString.fromCharCode).apply(nil,TJSValueDynArray(JSValue(a))));
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
Var
|
Var
|
||||||
B : TBytes;
|
B : TBytes;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
SetLength(B{%H-},AStream.Size);
|
SetLength(B{%H-},AStream.Size);
|
||||||
if Length(B)>0 then
|
if Length(B)>0 then
|
||||||
|
{$ifdef pas2js}
|
||||||
|
AStream.Read(B,length(B));
|
||||||
|
{$ELSE}
|
||||||
AStream.Read(B[0],length(B));
|
AStream.Read(B[0],length(B));
|
||||||
|
{$ENDIF}
|
||||||
|
{$IFNDEF PAS2JS}
|
||||||
FContent:=TEncoding.Default.GetAnsiString(B);
|
FContent:=TEncoding.Default.GetAnsiString(B);
|
||||||
|
{$ELSE}
|
||||||
|
FContent:=BufferToString(B);
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
FPos:=0;
|
FPos:=0;
|
||||||
end;
|
end;
|
||||||
{$endif}
|
|
||||||
|
|
||||||
procedure TStreamLineReader.InitFromString(const s: TPasScannerString);
|
procedure TStreamLineReader.InitFromString(const s: TPasScannerString);
|
||||||
begin
|
begin
|
||||||
@ -3184,7 +3208,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
{$ifdef fpc}
|
|
||||||
{ TStreamResolver }
|
{ TStreamResolver }
|
||||||
|
|
||||||
procedure TStreamResolver.SetOwnsStreams(AValue: Boolean);
|
procedure TStreamResolver.SetOwnsStreams(AValue: Boolean);
|
||||||
@ -3224,11 +3247,16 @@ procedure TStreamResolver.Clear;
|
|||||||
|
|
||||||
Var
|
Var
|
||||||
I : integer;
|
I : integer;
|
||||||
|
Obj : TObject;
|
||||||
begin
|
begin
|
||||||
if OwnsStreams then
|
if OwnsStreams then
|
||||||
begin
|
begin
|
||||||
For I:=0 to FStreams.Count-1 do
|
For I:=0 to FStreams.Count-1 do
|
||||||
Fstreams.Objects[i].Free;
|
begin
|
||||||
|
Obj:=Fstreams.Objects[i];
|
||||||
|
Fstreams.Objects[i]:=nil;
|
||||||
|
Obj.Free;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
FStreams.Clear;
|
FStreams.Clear;
|
||||||
end;
|
end;
|
||||||
@ -3295,7 +3323,7 @@ function TStreamResolver.FindIncludeFile(const AName: String): TLineReader;
|
|||||||
begin
|
begin
|
||||||
Result:=FindStreamReader(AName,True);
|
Result:=FindStreamReader(AName,True);
|
||||||
end;
|
end;
|
||||||
{$endif}
|
|
||||||
|
|
||||||
{ ---------------------------------------------------------------------
|
{ ---------------------------------------------------------------------
|
||||||
TPascalScanner
|
TPascalScanner
|
||||||
|
@ -398,7 +398,9 @@ procedure TPasSrcUtilTest.EndSource;
|
|||||||
begin
|
begin
|
||||||
AddLine('');
|
AddLine('');
|
||||||
AddLine('end.');
|
AddLine('end.');
|
||||||
|
{$IFNDEF PAS2JS}
|
||||||
FSrc.SaveToStream(FStream);
|
FSrc.SaveToStream(FStream);
|
||||||
|
{$ENDIF}
|
||||||
FStream.Position:=0;
|
FStream.Position:=0;
|
||||||
{$IFNDEF NOCONSOLE}
|
{$IFNDEF NOCONSOLE}
|
||||||
Writeln('// Test name : ',Self.TestName);
|
Writeln('// Test name : ',Self.TestName);
|
||||||
|
Loading…
Reference in New Issue
Block a user