mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-03 09:21:10 +02:00
parent
fba0c4d034
commit
1c0e549812
@ -26,6 +26,7 @@ type
|
|||||||
FBaseDir: string;
|
FBaseDir: string;
|
||||||
FCode: TCodeBuffer;
|
FCode: TCodeBuffer;
|
||||||
FPas2jsFilename: string;
|
FPas2jsFilename: string;
|
||||||
|
FRTLDirDefines: TDefineTemplate;
|
||||||
FUnitSetCache: TFPCUnitSetCache;
|
FUnitSetCache: TFPCUnitSetCache;
|
||||||
FVirtualDirDefines: TDefineTemplate;
|
FVirtualDirDefines: TDefineTemplate;
|
||||||
protected
|
protected
|
||||||
@ -34,6 +35,7 @@ type
|
|||||||
procedure DoParseModule(aCode: TCodeBuffer; out Tool: TCodeTool); virtual;
|
procedure DoParseModule(aCode: TCodeBuffer; out Tool: TCodeTool); virtual;
|
||||||
public
|
public
|
||||||
constructor Create; override;
|
constructor Create; override;
|
||||||
|
destructor Destroy; override;
|
||||||
procedure Add(const s: string);
|
procedure Add(const s: string);
|
||||||
procedure Add(Args: array of const);
|
procedure Add(Args: array of const);
|
||||||
function FindPas2js: string;
|
function FindPas2js: string;
|
||||||
@ -45,6 +47,7 @@ type
|
|||||||
property Code: TCodeBuffer read FCode;
|
property Code: TCodeBuffer read FCode;
|
||||||
property Pas2jsFilename: string read FPas2jsFilename write FPas2jsFilename; // compiler filename
|
property Pas2jsFilename: string read FPas2jsFilename write FPas2jsFilename; // compiler filename
|
||||||
property UnitSetCache: TFPCUnitSetCache read FUnitSetCache write FUnitSetCache;
|
property UnitSetCache: TFPCUnitSetCache read FUnitSetCache write FUnitSetCache;
|
||||||
|
property RTLDirDefines: TDefineTemplate read FRTLDirDefines write FRTLDirDefines;
|
||||||
property VirtualDirDefines: TDefineTemplate read FVirtualDirDefines write FVirtualDirDefines;
|
property VirtualDirDefines: TDefineTemplate read FVirtualDirDefines write FVirtualDirDefines;
|
||||||
property BaseDir: string read FBaseDir write FBaseDir;
|
property BaseDir: string read FBaseDir write FBaseDir;
|
||||||
end;
|
end;
|
||||||
@ -65,7 +68,7 @@ implementation
|
|||||||
procedure TCustomTestPas2js.SetUp;
|
procedure TCustomTestPas2js.SetUp;
|
||||||
var
|
var
|
||||||
CurUnitSet: TFPCUnitSetCache;
|
CurUnitSet: TFPCUnitSetCache;
|
||||||
UnitSetID: String;
|
UnitSetID, SystemFilename, RTLDir: String;
|
||||||
CompilerDefines: TDefineTemplate;
|
CompilerDefines: TDefineTemplate;
|
||||||
begin
|
begin
|
||||||
inherited SetUp;
|
inherited SetUp;
|
||||||
@ -79,13 +82,27 @@ begin
|
|||||||
'','','','',true);
|
'','','','',true);
|
||||||
// parse compiler settings
|
// parse compiler settings
|
||||||
UnitSetCache.Init;
|
UnitSetCache.Init;
|
||||||
|
|
||||||
|
SystemFilename:=UnitSetCache.GetUnitSrcFile('system',false);
|
||||||
|
if SystemFilename='' then
|
||||||
|
Fail('pas2js system unit not found');
|
||||||
|
RTLDir:=ExtractFilePath(SystemFilename);
|
||||||
|
// set pas2js for rtl directory
|
||||||
|
RTLDirDefines:=TDefineTemplate.Create(
|
||||||
|
'RTLDirPas2js', 'set pas2js as compiler',
|
||||||
|
'',ChompPathDelim(RTLDir),da_Directory);
|
||||||
|
RTLDirDefines.AddChild(TDefineTemplate.Create('Reset','','','',da_UndefineAll));
|
||||||
|
// create template for Pas2js settings
|
||||||
|
CompilerDefines:=CreateFPCTemplate(UnitSetCache,nil);
|
||||||
|
RTLDirDefines.AddChild(CompilerDefines);
|
||||||
|
CodeToolBoss.DefineTree.Add(RTLDirDefines);
|
||||||
end;
|
end;
|
||||||
UnitSetID:=UnitSetCache.GetUnitSetID;
|
UnitSetID:=UnitSetCache.GetUnitSetID;
|
||||||
|
|
||||||
// set pas2js for virtual directory
|
// set pas2js for virtual directory
|
||||||
if VirtualDirDefines=nil then begin
|
if VirtualDirDefines=nil then begin
|
||||||
VirtualDirDefines:=TDefineTemplate.Create(
|
VirtualDirDefines:=TDefineTemplate.Create(
|
||||||
'VirtualDirPas2js', 'set pas2js as compiler for virtual directory',
|
'VirtualDirPas2js', 'set pas2js as compiler',
|
||||||
'',VirtualDirectory,da_Directory);
|
'',VirtualDirectory,da_Directory);
|
||||||
VirtualDirDefines.AddChild(TDefineTemplate.Create('Reset','','','',da_UndefineAll));
|
VirtualDirDefines.AddChild(TDefineTemplate.Create('Reset','','','',da_UndefineAll));
|
||||||
// create template for Pas2js settings
|
// create template for Pas2js settings
|
||||||
@ -105,6 +122,8 @@ begin
|
|||||||
AssertEquals('VirtualDirectory compiler should be pas2js',
|
AssertEquals('VirtualDirectory compiler should be pas2js',
|
||||||
PascalCompilerNames[pcPas2js],
|
PascalCompilerNames[pcPas2js],
|
||||||
PascalCompilerNames[CodeToolBoss.GetPascalCompilerForDirectory('')]);
|
PascalCompilerNames[CodeToolBoss.GetPascalCompilerForDirectory('')]);
|
||||||
|
|
||||||
|
|
||||||
end;
|
end;
|
||||||
FCode:=CodeToolBoss.CreateFile('test1.pas');
|
FCode:=CodeToolBoss.CreateFile('test1.pas');
|
||||||
end;
|
end;
|
||||||
@ -144,6 +163,13 @@ begin
|
|||||||
FBaseDir:='pas2js';
|
FBaseDir:='pas2js';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
destructor TCustomTestPas2js.Destroy;
|
||||||
|
begin
|
||||||
|
if (RTLDirDefines<>nil) and (CodeToolBoss<>nil) then
|
||||||
|
CodeToolBoss.DefineTree.RemoveDefineTemplate(RTLDirDefines);
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCustomTestPas2js.Add(const s: string);
|
procedure TCustomTestPas2js.Add(const s: string);
|
||||||
begin
|
begin
|
||||||
FCode.Source:=FCode.Source+s+LineEnding;
|
FCode.Source:=FCode.Source+s+LineEnding;
|
||||||
|
Loading…
Reference in New Issue
Block a user