mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-14 13:19:20 +02:00
DBG: tests
git-svn-id: trunk@32905 -
This commit is contained in:
parent
2353e90507
commit
19fac2420e
@ -13,11 +13,13 @@ type
|
|||||||
|
|
||||||
TCompileHelper = class
|
TCompileHelper = class
|
||||||
private
|
private
|
||||||
|
FCommandLine: string;
|
||||||
FLastError: String;
|
FLastError: String;
|
||||||
public
|
public
|
||||||
function TestCompile(const PrgName, FpcOpts, ExeName, FpcExe: string): String;
|
function TestCompile(const PrgName, FpcOpts, ExeName, FpcExe: string): String;
|
||||||
function TestCompileUnits(const FpcExe, FpcOpts, SrcDirName, OutLibName: string): Boolean;
|
function TestCompileUnits(const FpcExe, FpcOpts, SrcDirName, OutLibName: string): Boolean;
|
||||||
property LastError: String read FLastError;
|
property LastError: String read FLastError;
|
||||||
|
property CommandLine: string read FCommandLine;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var CompileHelper: TCompileHelper;
|
var CompileHelper: TCompileHelper;
|
||||||
@ -95,6 +97,7 @@ begin
|
|||||||
CmdLine := FpcExe + ' -MObjFPC -FUlib -o'+ ExeName + ' ' + FpcOpts + ' ' + PrgName;
|
CmdLine := FpcExe + ' -MObjFPC -FUlib -o'+ ExeName + ' ' + FpcOpts + ' ' + PrgName;
|
||||||
debugln(['**** running compiler: ', CmdLine]);
|
debugln(['**** running compiler: ', CmdLine]);
|
||||||
FpcBuild.CommandLine := CmdLine;
|
FpcBuild.CommandLine := CmdLine;
|
||||||
|
FCommandLine := CmdLine;
|
||||||
|
|
||||||
FpcBuild.CurrentDirectory := ExtractFileDir(PrgName);
|
FpcBuild.CurrentDirectory := ExtractFileDir(PrgName);
|
||||||
|
|
||||||
@ -134,6 +137,7 @@ begin
|
|||||||
CmdLine := FpcExe + ' -MObjFPC -FU' + OutLibName + ' ' + FpcOpts + ' ' + SrcDirName;
|
CmdLine := FpcExe + ' -MObjFPC -FU' + OutLibName + ' ' + FpcOpts + ' ' + SrcDirName;
|
||||||
debugln(['**** running compiler: ', CmdLine]);
|
debugln(['**** running compiler: ', CmdLine]);
|
||||||
FpcBuild.CommandLine := CmdLine;
|
FpcBuild.CommandLine := CmdLine;
|
||||||
|
FCommandLine := CmdLine;
|
||||||
|
|
||||||
FpcBuild.CurrentDirectory := ExtractFileDir(SrcDirName);
|
FpcBuild.CurrentDirectory := ExtractFileDir(SrcDirName);
|
||||||
|
|
||||||
|
@ -113,11 +113,12 @@ type
|
|||||||
|
|
||||||
TCompilerSuite = class(TTestSuite)
|
TCompilerSuite = class(TTestSuite)
|
||||||
private
|
private
|
||||||
|
FCompileCommandLine: String;
|
||||||
FCompilerInfo: TCompilerInfo;
|
FCompilerInfo: TCompilerInfo;
|
||||||
FSymbolSwitch: String;
|
FSymbolSwitch: String;
|
||||||
FSymbolType: TSymbolType;
|
FSymbolType: TSymbolType;
|
||||||
FFileNameExt: String;
|
FFileNameExt: String;
|
||||||
FCompiledList, FCompiledUsesList, FCompiledUsesListID: TStringList;
|
FCompiledList, FCompiledListCmdLines, FCompiledUsesList, FCompiledUsesListID: TStringList;
|
||||||
FInRun: Boolean;
|
FInRun: Boolean;
|
||||||
protected
|
protected
|
||||||
procedure Clear;
|
procedure Clear;
|
||||||
@ -137,6 +138,7 @@ type
|
|||||||
UsesDirs: array of TUsesDir;
|
UsesDirs: array of TUsesDir;
|
||||||
NamePostFix: String=''; ExtraArgs: String=''
|
NamePostFix: String=''; ExtraArgs: String=''
|
||||||
); overload;
|
); overload;
|
||||||
|
property CompileCommandLine: String read FCompileCommandLine;
|
||||||
public
|
public
|
||||||
property SymbolType: TSymbolType read FSymbolType;
|
property SymbolType: TSymbolType read FSymbolType;
|
||||||
property SymbolSwitch: String read FSymbolSwitch;
|
property SymbolSwitch: String read FSymbolSwitch;
|
||||||
@ -149,12 +151,14 @@ type
|
|||||||
private
|
private
|
||||||
FDebuggerInfo: TDebuggerInfo;
|
FDebuggerInfo: TDebuggerInfo;
|
||||||
FParent: TCompilerSuite;
|
FParent: TCompilerSuite;
|
||||||
|
function GetCompileCommandLine: String;
|
||||||
function GetCompilerInfo: TCompilerInfo;
|
function GetCompilerInfo: TCompilerInfo;
|
||||||
function GetSymbolType: TSymbolType;
|
function GetSymbolType: TSymbolType;
|
||||||
public
|
public
|
||||||
constructor Create(AParent: TCompilerSuite; ADebuggerInfo: TDebuggerInfo);
|
constructor Create(AParent: TCompilerSuite; ADebuggerInfo: TDebuggerInfo);
|
||||||
procedure RegisterDbgTest(ATestClass: TTestCaseClass);
|
procedure RegisterDbgTest(ATestClass: TTestCaseClass);
|
||||||
Procedure TestCompile(const PrgName: string; out ExeName: string; UsesDirs: array of TUsesDir; NamePostFix: String=''; ExtraArgs: String='');
|
Procedure TestCompile(const PrgName: string; out ExeName: string; UsesDirs: array of TUsesDir; NamePostFix: String=''; ExtraArgs: String='');
|
||||||
|
property CompileCommandLine: String read GetCompileCommandLine;
|
||||||
public
|
public
|
||||||
property Parent: TCompilerSuite read FParent;
|
property Parent: TCompilerSuite read FParent;
|
||||||
property DebuggerInfo: TDebuggerInfo read FDebuggerInfo;
|
property DebuggerInfo: TDebuggerInfo read FDebuggerInfo;
|
||||||
@ -167,6 +171,7 @@ type
|
|||||||
TGDBTestsuite = class(TTestSuite)
|
TGDBTestsuite = class(TTestSuite)
|
||||||
private
|
private
|
||||||
FParent: TDebuggerSuite;
|
FParent: TDebuggerSuite;
|
||||||
|
function GetCompileCommandLine: String;
|
||||||
function GetCompilerInfo: TCompilerInfo;
|
function GetCompilerInfo: TCompilerInfo;
|
||||||
function GetDebuggerInfo: TDebuggerInfo;
|
function GetDebuggerInfo: TDebuggerInfo;
|
||||||
function GetSymbolType: TSymbolType;
|
function GetSymbolType: TSymbolType;
|
||||||
@ -174,6 +179,7 @@ type
|
|||||||
constructor Create(AParent: TDebuggerSuite; AClass: TClass);
|
constructor Create(AParent: TDebuggerSuite; AClass: TClass);
|
||||||
procedure AddTest(ATest: TTest); overload; override;
|
procedure AddTest(ATest: TTest); overload; override;
|
||||||
Procedure TestCompile(const PrgName: string; out ExeName: string; UsesDirs: array of TUsesDir; NamePostFix: String=''; ExtraArgs: String='');
|
Procedure TestCompile(const PrgName: string; out ExeName: string; UsesDirs: array of TUsesDir; NamePostFix: String=''; ExtraArgs: String='');
|
||||||
|
property CompileCommandLine: String read GetCompileCommandLine;
|
||||||
public
|
public
|
||||||
property Parent: TDebuggerSuite read FParent;
|
property Parent: TDebuggerSuite read FParent;
|
||||||
property DebuggerInfo: TDebuggerInfo read GetDebuggerInfo;
|
property DebuggerInfo: TDebuggerInfo read GetDebuggerInfo;
|
||||||
@ -209,6 +215,7 @@ type
|
|||||||
FCurrentPrgName, FCurrentExename: String;
|
FCurrentPrgName, FCurrentExename: String;
|
||||||
FLogFile: TextFile;
|
FLogFile: TextFile;
|
||||||
FLogFileCreated: Boolean;
|
FLogFileCreated: Boolean;
|
||||||
|
FLogFileName, FFinalLogFileName: String;
|
||||||
function GetCompilerInfo: TCompilerInfo;
|
function GetCompilerInfo: TCompilerInfo;
|
||||||
function GetDebuggerInfo: TDebuggerInfo;
|
function GetDebuggerInfo: TDebuggerInfo;
|
||||||
function GetSymbolType: TSymbolType;
|
function GetSymbolType: TSymbolType;
|
||||||
@ -239,6 +246,7 @@ type
|
|||||||
Procedure TestCompile(const PrgName: string; out ExeName: string; UsesDirs: array of TUsesDir;
|
Procedure TestCompile(const PrgName: string; out ExeName: string; UsesDirs: array of TUsesDir;
|
||||||
NamePostFix: String=''; ExtraArgs: String=''); overload;
|
NamePostFix: String=''; ExtraArgs: String=''); overload;
|
||||||
function SkipTest: Boolean;
|
function SkipTest: Boolean;
|
||||||
|
procedure LogToFile(const s: string);
|
||||||
public
|
public
|
||||||
property Parent: TGDBTestsuite read FParent write FParent;
|
property Parent: TGDBTestsuite read FParent write FParent;
|
||||||
property DebuggerInfo: TDebuggerInfo read GetDebuggerInfo;
|
property DebuggerInfo: TDebuggerInfo read GetDebuggerInfo;
|
||||||
@ -408,6 +416,8 @@ begin
|
|||||||
for i := 1 to length(name) do
|
for i := 1 to length(name) do
|
||||||
if name[i] in ['/', '\', '*', '?', ':'] then
|
if name[i] in ['/', '\', '*', '?', ':'] then
|
||||||
name[i] := '_';
|
name[i] := '_';
|
||||||
|
FLogFileName := dir + name;
|
||||||
|
FFinalLogFileName := dir + name;
|
||||||
AssignFile(FLogFile, Dir + name);
|
AssignFile(FLogFile, Dir + name);
|
||||||
Rewrite(FLogFile);
|
Rewrite(FLogFile);
|
||||||
FLogFileCreated := True;
|
FLogFileCreated := True;
|
||||||
@ -425,6 +435,8 @@ begin
|
|||||||
inherited TearDown;
|
inherited TearDown;
|
||||||
if FLogFileCreated then begin
|
if FLogFileCreated then begin
|
||||||
CloseFile(FLogFile);
|
CloseFile(FLogFile);
|
||||||
|
if FFinalLogFileName <> FLogFileName
|
||||||
|
then RenameFileUTF8(FLogFileName, FFinalLogFileName);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -605,6 +617,12 @@ begin
|
|||||||
writeln(FLogFile, '================= Unexpected Success'+LineEnding);
|
writeln(FLogFile, '================= Unexpected Success'+LineEnding);
|
||||||
writeln(FLogFile, FUnexpectedSuccess);
|
writeln(FLogFile, FUnexpectedSuccess);
|
||||||
writeln(FLogFile, '================='+LineEnding);
|
writeln(FLogFile, '================='+LineEnding);
|
||||||
|
if (FTestErrorCnt > 0) and (pos('failed', FFinalLogFileName) < 1)
|
||||||
|
then FFinalLogFileName := FFinalLogFileName + '.failed';
|
||||||
|
if (FIgnoredErrorCnt > 0) and (pos('ignored', FFinalLogFileName) < 1)
|
||||||
|
then FFinalLogFileName := FFinalLogFileName + '.ignored';
|
||||||
|
if (FUnexpectedSuccessCnt > 0) and (pos('unexpected', FFinalLogFileName) < 1)
|
||||||
|
then FFinalLogFileName := FFinalLogFileName + '.unexpected';
|
||||||
end;
|
end;
|
||||||
if s <> '' then begin
|
if s <> '' then begin
|
||||||
Fail(s1+ LineEnding + s);
|
Fail(s1+ LineEnding + s);
|
||||||
@ -620,11 +638,9 @@ end;
|
|||||||
procedure TGDBTestCase.TestCompile(const PrgName: string; out ExeName: string;
|
procedure TGDBTestCase.TestCompile(const PrgName: string; out ExeName: string;
|
||||||
UsesDirs: array of TUsesDir; NamePostFix: String; ExtraArgs: String);
|
UsesDirs: array of TUsesDir; NamePostFix: String; ExtraArgs: String);
|
||||||
begin
|
begin
|
||||||
if GetLogActive then begin
|
LogToFile(LineEnding+LineEnding + '******************* compile '+PrgName + ' ' + ExtraArgs +LineEnding );
|
||||||
CreateLog;
|
|
||||||
writeln(FLogFile, LineEnding+LineEnding+'******************* compile '+PrgName + ' ' + ExtraArgs +LineEnding);
|
|
||||||
end;
|
|
||||||
Parent.TestCompile(PrgName, ExeName, UsesDirs, NamePostFix, ExtraArgs);
|
Parent.TestCompile(PrgName, ExeName, UsesDirs, NamePostFix, ExtraArgs);
|
||||||
|
LogToFile(Parent.CompileCommandLine+LineEnding + '*******************' +LineEnding+LineEnding );
|
||||||
FCurrentPrgName := PrgName;
|
FCurrentPrgName := PrgName;
|
||||||
FCurrentExename := ExeName;
|
FCurrentExename := ExeName;
|
||||||
end;
|
end;
|
||||||
@ -636,6 +652,14 @@ begin
|
|||||||
not TestControlForm.chkFPC.Checked[TestControlForm.chkFPC.Items.IndexOf(CompilerInfo.Name)];
|
not TestControlForm.chkFPC.Checked[TestControlForm.chkFPC.Items.IndexOf(CompilerInfo.Name)];
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TGDBTestCase.LogToFile(const s: string);
|
||||||
|
begin
|
||||||
|
if GetLogActive then begin
|
||||||
|
CreateLog;
|
||||||
|
writeln(FLogFile, s);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TBaseList }
|
{ TBaseList }
|
||||||
|
|
||||||
procedure TBaseList.LoadFromFile(const AFileName: string);
|
procedure TBaseList.LoadFromFile(const AFileName: string);
|
||||||
@ -792,6 +816,7 @@ begin
|
|||||||
for i := 0 to FCompiledUsesList.Count - 1 do
|
for i := 0 to FCompiledUsesList.Count - 1 do
|
||||||
DeleteDirectory(FCompiledUsesList[i], False);
|
DeleteDirectory(FCompiledUsesList[i], False);
|
||||||
FCompiledList.Clear;
|
FCompiledList.Clear;
|
||||||
|
FCompiledListCmdLines.Clear;
|
||||||
FCompiledUsesList.Clear;
|
FCompiledUsesList.Clear;
|
||||||
FCompiledUsesListID.Clear;
|
FCompiledUsesListID.Clear;
|
||||||
end;
|
end;
|
||||||
@ -807,6 +832,7 @@ begin
|
|||||||
FSymbolType := ASymbolType;
|
FSymbolType := ASymbolType;
|
||||||
|
|
||||||
FCompiledList := TStringList.Create;
|
FCompiledList := TStringList.Create;
|
||||||
|
FCompiledListCmdLines := TStringList.Create;
|
||||||
FCompiledUsesList := TStringList.Create;
|
FCompiledUsesList := TStringList.Create;
|
||||||
FCompiledUsesListID := TStringList.Create;
|
FCompiledUsesListID := TStringList.Create;
|
||||||
FSymbolSwitch := SymbolTypeSwitches[FSymbolType];
|
FSymbolSwitch := SymbolTypeSwitches[FSymbolType];
|
||||||
@ -827,6 +853,7 @@ begin
|
|||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
Clear;
|
Clear;
|
||||||
FreeAndNil(FCompiledList);
|
FreeAndNil(FCompiledList);
|
||||||
|
FreeAndNil(FCompiledListCmdLines);
|
||||||
FreeAndNil(FCompiledUsesList);
|
FreeAndNil(FCompiledUsesList);
|
||||||
FreeAndNil(FCompiledUsesListID);
|
FreeAndNil(FCompiledUsesListID);
|
||||||
end;
|
end;
|
||||||
@ -905,6 +932,7 @@ var
|
|||||||
i: Integer;
|
i: Integer;
|
||||||
NewLibDir, NewExeID: string;
|
NewLibDir, NewExeID: string;
|
||||||
begin
|
begin
|
||||||
|
FCompileCommandLine := '';
|
||||||
ExePath := ExtractFileNameWithoutExt(PrgName);
|
ExePath := ExtractFileNameWithoutExt(PrgName);
|
||||||
ExeName := ExtractFileNameOnly(ExePath);
|
ExeName := ExtractFileNameOnly(ExePath);
|
||||||
ExePath := AppendPathDelim(copy(ExePath, 1, length(ExePath) - length(ExeName)));
|
ExePath := AppendPathDelim(copy(ExePath, 1, length(ExePath) - length(ExeName)));
|
||||||
@ -922,19 +950,24 @@ begin
|
|||||||
|
|
||||||
if ExtraArgs <> '' then
|
if ExtraArgs <> '' then
|
||||||
ExtraArgs := ' '+ExtraArgs;
|
ExtraArgs := ' '+ExtraArgs;
|
||||||
if FCompiledList.IndexOf(ExeName) < 0 then begin
|
i := FCompiledList.IndexOf(ExeName);
|
||||||
|
if i < 0 then begin
|
||||||
if FileExists(ExeName) then
|
if FileExists(ExeName) then
|
||||||
raise EAssertionFailedError.Create('Found existing file before compiling: ' + ExeName);
|
raise EAssertionFailedError.Create('Found existing file before compiling: ' + ExeName);
|
||||||
FCompiledList.Add(ExeName);
|
i := FCompiledList.Add(ExeName);
|
||||||
ErrMsg := CompileHelper.TestCompile(PrgName,
|
ErrMsg := CompileHelper.TestCompile(PrgName,
|
||||||
FSymbolSwitch + ' ' + ExtraFUPath + ' ' + FCompilerInfo.ExtraOpts + ExtraArgs,
|
FSymbolSwitch + ' ' + ExtraFUPath + ' ' + FCompilerInfo.ExtraOpts + ExtraArgs,
|
||||||
ExeName,
|
ExeName,
|
||||||
CompilerInfo.ExeName);
|
CompilerInfo.ExeName);
|
||||||
|
FCompileCommandLine := CompileHelper.CommandLine;
|
||||||
|
FCompiledListCmdLines.Add(FCompileCommandLine);
|
||||||
if ErrMsg <> '' then begin
|
if ErrMsg <> '' then begin
|
||||||
debugln(ErrMsg);
|
debugln(ErrMsg);
|
||||||
raise EAssertionFailedError.Create('Compilation Failed: ' + ExeName + LineEnding + ErrMsg);
|
raise EAssertionFailedError.Create('Compilation Failed: ' + ExeName + LineEnding + ErrMsg);
|
||||||
end;
|
end;
|
||||||
end;
|
end
|
||||||
|
else
|
||||||
|
FCompileCommandLine := FCompiledListCmdLines[i];
|
||||||
|
|
||||||
if not FileExists(ExeName) then
|
if not FileExists(ExeName) then
|
||||||
raise EAssertionFailedError.Create('Missing compiled exe ' + ExeName);
|
raise EAssertionFailedError.Create('Missing compiled exe ' + ExeName);
|
||||||
@ -947,6 +980,11 @@ begin
|
|||||||
Result := Parent.CompilerInfo;
|
Result := Parent.CompilerInfo;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TDebuggerSuite.GetCompileCommandLine: String;
|
||||||
|
begin
|
||||||
|
Result := Parent.CompileCommandLine;
|
||||||
|
end;
|
||||||
|
|
||||||
function TDebuggerSuite.GetSymbolType: TSymbolType;
|
function TDebuggerSuite.GetSymbolType: TSymbolType;
|
||||||
begin
|
begin
|
||||||
Result := Parent.SymbolType;
|
Result := Parent.SymbolType;
|
||||||
@ -981,6 +1019,11 @@ begin
|
|||||||
Result := Parent.CompilerInfo;
|
Result := Parent.CompilerInfo;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TGDBTestsuite.GetCompileCommandLine: String;
|
||||||
|
begin
|
||||||
|
Result := Parent.CompileCommandLine;
|
||||||
|
end;
|
||||||
|
|
||||||
function TGDBTestsuite.GetDebuggerInfo: TDebuggerInfo;
|
function TGDBTestsuite.GetDebuggerInfo: TDebuggerInfo;
|
||||||
begin
|
begin
|
||||||
Result := Parent.DebuggerInfo;
|
Result := Parent.DebuggerInfo;
|
||||||
|
@ -510,17 +510,17 @@ begin
|
|||||||
r:=AddStringFmtDef('AnsiString(VArgTMyAnsiString)', '''MyAnsi 2''$', 'AnsiString|\^char', [fTpMtch]);
|
r:=AddStringFmtDef('AnsiString(VArgTMyAnsiString)', '''MyAnsi 2''$', 'AnsiString|\^char', [fTpMtch]);
|
||||||
UpdRes(r, stDwarf3, 'AnsiString', []);
|
UpdRes(r, stDwarf3, 'AnsiString', []);
|
||||||
|
|
||||||
r:=AddFmtDef('PMyAnsiString(ArgPMyAnsiString)', MatchPointer, skPointer, 'PMyAnsiString', []);
|
r:=AddFmtDef('PMyAnsiString(ArgPMyAnsiString)', MatchPointer, skPointer, '^(\^|PMy)AnsiString$', [fTpMtch]);
|
||||||
UpdRes(r, stStabs, '^(PMyAnsiString|PPChar)$', [fTpMtch]);
|
UpdRes(r, stStabs, '^(PMyAnsiString|PPChar)$', [fTpMtch]);
|
||||||
r:=AddFmtDef('PMyAnsiString(VArgPMyAnsiString)', MatchPointer, skPointer, 'PMyAnsiString', []);
|
r:=AddFmtDef('PMyAnsiString(VArgPMyAnsiString)', MatchPointer, skPointer, '^(\^|PMy)AnsiString$', [fTpMtch]);
|
||||||
UpdRes(r, stStabs, '^(PMyAnsiString|PPChar)$', [fTpMtch]);
|
UpdRes(r, stStabs, '^(PMyAnsiString|PPChar)$', [fTpMtch]);
|
||||||
// TODO,, IDE derefs with dwarf3
|
// TODO,, IDE derefs with dwarf3
|
||||||
r:=AddFmtDef('^AnsiString(ArgPMyAnsiString)', MatchPointer, skPointer, '^AnsiString', [fnoDwrf3]);
|
r:=AddFmtDef('^AnsiString(ArgPMyAnsiString)', MatchPointer, skPointer, '^(\^AnsiString|\^\^char)', [fnoDwrf3, fTpMtch]);
|
||||||
UpdRes(r, stStabs, '^(\^AnsiString|PPChar)$', [fTpMtch]);
|
UpdRes(r, stStabs, '^(\^AnsiString|PPChar)$', [fTpMtch]);
|
||||||
r:=AddFmtDef('^AnsiString(VArgPMyAnsiString)', MatchPointer, skPointer, '^AnsiString', [fnoDwrf3]);
|
r:=AddFmtDef('^AnsiString(VArgPMyAnsiString)', MatchPointer, skPointer, '^(\^AnsiString|\^\^char)', [fnoDwrf3, fTpMtch]);
|
||||||
UpdRes(r, stStabs, '^(\^AnsiString|PPChar)$', [fTpMtch]);
|
UpdRes(r, stStabs, '^(\^AnsiString|PPChar)$', [fTpMtch]);
|
||||||
|
|
||||||
r:=AddStringFmtDef('AnsiString(ArgPMyAnsiString^)', '''MyAnsi P''$', '^(TMy)?AnsiString$', [fTpMtch]);
|
r:=AddStringFmtDef('AnsiString(ArgPMyAnsiString^)', '''MyAnsi P''$', '^((TMy)?AnsiString|\^char)$', [fTpMtch]);
|
||||||
r:=AddStringFmtDef('AnsiString(VArgPMyAnsiString^)', '''MyAnsi P2''$', '^(TMy)?AnsiString$', [fTpMtch, fnoDwrf2]);
|
r:=AddStringFmtDef('AnsiString(VArgPMyAnsiString^)', '''MyAnsi P2''$', '^(TMy)?AnsiString$', [fTpMtch, fnoDwrf2]);
|
||||||
r:=AddStringFmtDef('PMyAnsiString(ArgPMyAnsiString)^', '''MyAnsi P''$', '^(TMy)?AnsiString$', [fTpMtch]);
|
r:=AddStringFmtDef('PMyAnsiString(ArgPMyAnsiString)^', '''MyAnsi P''$', '^(TMy)?AnsiString$', [fTpMtch]);
|
||||||
r:=AddStringFmtDef('PMyAnsiString(VArgPMyAnsiString)^', '''MyAnsi P2''$', '^(TMy)?AnsiString$', [fTpMtch, fnoDwrf2]);
|
r:=AddStringFmtDef('PMyAnsiString(VArgPMyAnsiString)^', '''MyAnsi P2''$', '^(TMy)?AnsiString$', [fTpMtch, fnoDwrf2]);
|
||||||
@ -1037,6 +1037,7 @@ var
|
|||||||
DataRes := Data.Result[SymbolType];
|
DataRes := Data.Result[SymbolType];
|
||||||
|
|
||||||
n := Data.TestName;
|
n := Data.TestName;
|
||||||
|
LogToFile('###### ' + n + '######' +LineEnding);
|
||||||
if n = '' then n := Data.Expression + ' (' + TWatchDisplayFormatNames[Data.DspFormat] + ')';
|
if n = '' then n := Data.Expression + ' (' + TWatchDisplayFormatNames[Data.DspFormat] + ')';
|
||||||
Name := Name + ' ' + n;
|
Name := Name + ' ' + n;
|
||||||
flag := AWatch <> nil;
|
flag := AWatch <> nil;
|
||||||
|
Loading…
Reference in New Issue
Block a user