mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-19 22:29:25 +02:00
FpDebug: tests
git-svn-id: trunk@61921 -
This commit is contained in:
parent
d7a8a70916
commit
10c89a58d9
@ -1010,16 +1010,49 @@ begin
|
||||
t.Add( 'TIntDynArray', weMatch('type array of (integer|longint)', skType)).AddFlag(ehNoTypeInfo);
|
||||
t.Add( 'byte', weMatch('type byte', skType)).AddFlag(ehNoTypeInfo);
|
||||
|
||||
t.Add('MyStringItemList', weStatArray([], -1) ).IgnTypeName();
|
||||
t.Add('MyStringList.FLIST^', weStatArray([], -1) ).IgnTypeName();
|
||||
t.Add('TMYSTRINGLIST(MyStringList).FLIST^', weStatArray([], -1) ).IgnTypeName();
|
||||
t.Add('MyClass1.FMyStringList.FLIST^', weStatArray([], -1) ).IgnTypeName();
|
||||
t.Add('TMYSTRINGLIST(MyClass1.FMyStringList).FLIST^', weStatArray([], -1) ).IgnTypeName();
|
||||
t.Add('TMYSTRINGLIST(TMyClass(MyClass1).FMyStringList).FLIST^', weStatArray([], -1) ).IgnTypeName();
|
||||
t.Add('TMYSTRINGLIST(TMyClass(MyClass2).FMyStringList).FLIST^', weStatArray([], -1) ).IgnTypeName();
|
||||
|
||||
t.Add('MyStringList.FLIST^[0]', weMatch('FString', skRecord) ).IgnTypeName();
|
||||
t.Add('TMYSTRINGLIST(MyStringList).FLIST^[0]', weMatch('FString', skRecord) ).IgnTypeName();
|
||||
t.Add('MyClass1.FMyStringList.FLIST^[0]', weMatch('FString', skRecord) ).IgnTypeName();
|
||||
t.Add('TMYSTRINGLIST(MyClass1.FMyStringList).FLIST^[0]', weMatch('FString', skRecord) ).IgnTypeName();
|
||||
t.Add('TMYSTRINGLIST(TMyClass(MyClass1).FMyStringList).FLIST^[0]', weMatch('FString', skRecord) ).IgnTypeName();
|
||||
t.Add('TMYSTRINGLIST(TMyClass(MyClass2).FMyStringList).FLIST^[0]', weMatch('FString', skRecord) ).IgnTypeName();
|
||||
|
||||
AddWatches(t, 'glob const', 'gc', 000, 'A', tlConst);
|
||||
AddWatches(t, 'glob var', 'gv', 001, 'B');
|
||||
AddWatches(t, 'glob var (@)^', '(@gv', 001, 'B', tlAny, ')^');
|
||||
// AddWatches(t, 'glob var @^', '@gv', 001, 'B', tlAny, '^');
|
||||
|
||||
AddWatches(t, 'glob MyClass1', 'MyClass1.mc', 002, 'C');
|
||||
AddWatches(t, 'glob MyBaseClass1', 'MyClass1.mbc', 003, 'D');
|
||||
AddWatches(t, 'glob MyClass1', 'TMyClass(MyClass2).mc', 004, 'E');
|
||||
AddWatches(t, 'glob MyBaseClass1', 'TMyClass(MyClass2).mbc', 005, 'F');
|
||||
AddWatches(t, 'glob cast MyClass2', 'TMyClass(MyClass2).mc', 004, 'E');
|
||||
AddWatches(t, 'glob cast MyBaseClass2', 'TMyClass(MyClass2).mbc', 005, 'F');
|
||||
AddWatches(t, 'glob MyPClass1', 'MyPClass1^.mc', 002, 'C');
|
||||
AddWatches(t, 'glob cast MyPClass2', 'TMyClass(MyPClass2^).mc', 004, 'E');
|
||||
|
||||
AddWatches(t, 'glob var dyn array of [0]', 'gva', 005, 'K', tlArrayWrap, '[0]' );
|
||||
AddWatches(t, 'glob var dyn array of [1]', 'gva', 006, 'L', tlArrayWrap, '[1]');
|
||||
AddWatches(t, 'glob var array [0..2] of [0]', 'gv_sa_', 007, 'O', tlArrayWrap, '[0]' );
|
||||
AddWatches(t, 'glob var array [0..2] of [1]', 'gv_sa_', 008, 'P', tlArrayWrap, '[1]');
|
||||
AddWatches(t, 'glob var array [-1..2] of [-1]', 'gv_nsa_', 009, 'Q', tlArrayWrap, '[-1]' );
|
||||
AddWatches(t, 'glob var array [-1..2] of [0]', 'gv_nsa_', 010, 'R', tlArrayWrap, '[0]');
|
||||
AddWatches(t, 'glob var array [-1..2] of [1]', 'gv_nsa_', 011, 'S', tlArrayWrap, '[1]');
|
||||
|
||||
AddWatches(t, 'glob var ptr dyn array of [0]', 'gvp_a_', 005, 'K', tlArrayWrap, '^[0]' );
|
||||
AddWatches(t, 'glob var ptr dyn array of [1]', 'gvp_a_', 006, 'L', tlArrayWrap, '^[1]');
|
||||
AddWatches(t, 'glob var ptr array [0..2] of [0]', 'gvp_sa_', 007, 'O', tlArrayWrap, '^[0]' );
|
||||
AddWatches(t, 'glob var ptr array [0..2] of [1]', 'gvp_sa_', 008, 'P', tlArrayWrap, '^[1]');
|
||||
AddWatches(t, 'glob var ptr array [-1..2] of [-1]', 'gvp_nsa_', 009, 'Q', tlArrayWrap, '^[-1]' );
|
||||
AddWatches(t, 'glob var ptr array [-1..2] of [0]', 'gvp_nsa_', 010, 'R', tlArrayWrap, '^[0]');
|
||||
AddWatches(t, 'glob var ptr array [-1..2] of [1]', 'gvp_nsa_', 011, 'S', tlArrayWrap, '^[1]');
|
||||
|
||||
AddWatches(t, 'glob var pointer', 'gvp_', 001, 'B', tlPointer, '^'); // pointer
|
||||
AddWatches(t, 'glob var named pointer', 'gvpt_', 001, 'B', tlPointer, '^'); // pointer
|
||||
|
||||
|
@ -31,6 +31,19 @@ type
|
||||
PPointerList = ^TPointerList;
|
||||
TPointerList = array[0..MaxListSize - 1] of Pointer;
|
||||
|
||||
TMyStringItem = record
|
||||
FString: string;
|
||||
FObject: TObject;
|
||||
end;
|
||||
TMyStringItemListShort = array[0..10] of TMyStringItem;
|
||||
TMyStringItemList = array[0..MaxListSize - 1] of TMyStringItem;
|
||||
PMyStringItemList = ^TMyStringItemList;
|
||||
TMyStringList = class
|
||||
private
|
||||
FList: PMyStringItemList;
|
||||
end;
|
||||
|
||||
|
||||
var
|
||||
BreakDummy: PtrUInt;
|
||||
p: Pointer;
|
||||
@ -141,6 +154,23 @@ type
|
||||
|
||||
type
|
||||
(* LOCATION: TYPE *)
|
||||
|
||||
// T_a_Byte = array of Byte;
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc, pre__=T_a_, "_OP_== array of ", (=;//, "_O2_== array of ", _EQ_=, _BLOCK_=TestVar )
|
||||
// PT_a_Byte = ^T_a_Byte;
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc, pre__=PT_a_, "_OP_={", "_O2_={", _pre3_=^T_a_, "//@@=} = ") // }}}}
|
||||
|
||||
// T_sa_Byte = array [0..2] of Byte;
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc, pre__=T_sa_, "_OP_== array [0..2] of ", (=;//, "_O2_== array [0..2] of ", _EQ_=, _BLOCK_=TestVar )
|
||||
// PT_sa_Byte = ^T_sa_Byte;
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc, pre__=PT_sa_, "_OP_={", "_O2_={", _pre3_=^T_sa_, "//@@=} = ") // }}}}
|
||||
|
||||
// T_nsa_Byte = array [-1..2] of Byte;
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc, pre__=T_nsa_, "_OP_== array [-1..2] of ", (=;//, "_O2_== array [-1..2] of ", _EQ_=, _BLOCK_=TestVar )
|
||||
// PT_nsa_Byte = ^T_nsa_Byte;
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc, pre__=PT_nsa_, "_OP_={", "_O2_={", _pre3_=^T_nsa_, "//@@=} = ") // }}}}
|
||||
|
||||
|
||||
// type TxByte: type Byte;
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc, pre__=Tx, "_OP_== type ", (=;//, "_O2_= = type", _EQ_=, _BLOCK_=TestVar, _BLOCK2_=TestType )
|
||||
// type PTxByte: ^TxByte;
|
||||
@ -158,18 +188,25 @@ type
|
||||
// mbcByte: Byte;
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc, pre__=mbc, _OP_=:, (=;//, _O2_=:, _EQ_=, _BLOCK_=TestVar )
|
||||
end;
|
||||
PMyBaseClass = ^TMyBaseClass;
|
||||
|
||||
(* LOCATION: field in class *)
|
||||
TMyClass = class(TMyBaseClass)
|
||||
public
|
||||
// mcByte: Byte;
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc, pre__=mc, _OP_=:, (=;//, _O2_=:, _EQ_=, _BLOCK_=TestVar )
|
||||
FMyStringList: TMyStringList;
|
||||
end;
|
||||
PMyClass = ^TMyClass;
|
||||
|
||||
var
|
||||
MyClass1: TMyClass;
|
||||
MyClass2: TMyBaseClass; (* LOCATION: field, requires typecast of containing class *)
|
||||
MyPClass1: PMyClass;
|
||||
MyPClass2: PMyBaseClass;
|
||||
|
||||
MyStringItemList: TMyStringItemListShort;
|
||||
MyStringList: TMyStringList;
|
||||
|
||||
const
|
||||
(* LOCATION: global const *)
|
||||
@ -183,9 +220,25 @@ var
|
||||
// gv2_Byte: Byte = (1 + add);
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc, pre__=gv2_, _OP_=:, (=;//, _O2_=:, _EQ_=, _BLOCK_=TestVar )
|
||||
|
||||
|
||||
(* LOCATION: global var ARRAY OF <each type> *)
|
||||
// gvaByte: array of Byte;
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc, pre__=gva, "_OP_=: array of", (=;//, "_O2_=: array of", _EQ_=, _BLOCK_=TestVar )
|
||||
// gvp_a_Byte: PT_a_; // ^array of byte
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc, pre__=gvp_a_, "_OP_={", "_O2_={", "//@@=} :", _pre3_=PT_a_ ) // }
|
||||
|
||||
(* LOCATION: global var ARRAY [0..2] OF <each type> *)
|
||||
// gv_sa_Byte: array [0..2] of Byte;
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc, pre__=gv_sa_, "_OP_=: array [0..2] of", (=;//, "_O2_=: array [0..2] of", _EQ_=, _BLOCK_=TestVar )
|
||||
// gvp_sa_Byte: PT_sa_; // ^array [0..2] of byte
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc, pre__=gvp_sa_, "_OP_={", "_O2_={", "//@@=} :", _pre3_=PT_sa_ ) // }
|
||||
|
||||
(* LOCATION: global var ARRAY [-1..2] OF <each type> *)
|
||||
// gv_sa2_Byte: array [-1..2] of Byte;
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc, pre__=gv_nsa_, "_OP_=: array [-1..2] of", (=;//, "_O2_=: array [-1..2] of", _EQ_=, _BLOCK_=TestVar )
|
||||
// gvp_sa_Byte: PT_nsa_; // ^array [-1..2] of byte
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc, pre__=gvp_nsa_, "_OP_={", "_O2_={", "//@@=} :", _pre3_=PT_nsa_ ) // }
|
||||
|
||||
|
||||
(* LOCATION: global var pointer <each type> *)
|
||||
// gvp_Byte: ^Byte;
|
||||
@ -333,18 +386,49 @@ begin
|
||||
(* INIT: field in class / baseclass *)
|
||||
MyClass1 := TMyClass.Create;
|
||||
MyClass1.SomeMeth1(1);
|
||||
MyPClass1 := @MyClass1;
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc,pre__=MyClass1.mbc, ADD=3, CHR1='D', _OP_=:=, _O2_={, _EQ_=}:=, _pre2_=gc, _BLOCK_=TestAssign)
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc,pre__=MyClass1.mc, ADD=2, CHR1='C', _OP_=:=, _O2_={, _EQ_=}:=, _pre2_=gc, _BLOCK_=TestAssign)
|
||||
|
||||
(* INIT: field in class / baseclass // typecast *)
|
||||
MyClass2 := TMyClass.Create;
|
||||
MyPClass2 := @MyClass2;
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc,"pre__=TMyClass(MyClass2).mbc", ADD=5, CHR1='F', _OP_=:=, _O2_={, _EQ_=}:=, _pre2_=gc, _BLOCK_=TestAssign)
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc,"pre__=TMyClass(MyClass2).mc", ADD=4, CHR1='E', _OP_=:=, _O2_={, _EQ_=}:=, _pre2_=gc, _BLOCK_=TestAssign)
|
||||
|
||||
|
||||
MyStringList := TMyStringList.Create;
|
||||
MyStringList.Flist := @MyStringItemList;
|
||||
MyClass1.FMyStringList := TMyStringList.Create;
|
||||
MyClass1.FMyStringList.Flist := @MyStringItemList;
|
||||
TMyClass(MyClass2).FMyStringList := TMyStringList.Create;
|
||||
TMyClass(MyClass2).FMyStringList.Flist := @MyStringItemList;
|
||||
MyStringItemList[0].FString := 'ABC1';
|
||||
MyStringItemList[1].FString := 'DEF2';
|
||||
MyStringItemList[2].FString := 'XYZ3';
|
||||
|
||||
|
||||
(* INIT: global var ARRAY OF <each type> *)
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc,"pre__=SetLength(gva", "_OP_=,2);//", "_O2_=,2);//", _BLOCK_=TestSetLen)
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc,pre__=gva, ADD=5, CHR1='K', _OP_=:=, _O2_={, _EQ_=}:=, _pre2_=gc, "{e}=[0]", _BLOCK_=TestAssign)
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc,pre__=gva, ADD=6, CHR1='L', _OP_=:=, _O2_={, _EQ_=}:=, _pre2_=gc, "{e}=[1]", _BLOCK_=TestAssign)
|
||||
// gvp_a_Byte := @gvaByte;
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc, pre__=gvp_a_, "_OP_= {", "_O2_={ ", "//@@=} :=", _pre3_=@gva ) // }
|
||||
|
||||
|
||||
(* INIT: global var ARRAY [0..2] OF <each type> *)
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc,pre__=gv_sa_, ADD=7, CHR1='O', _OP_=:=, _O2_={, _EQ_=}:=, _pre2_=gc, "{e}=[0]", _BLOCK_=TestAssign)
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc,pre__=gv_sa_, ADD=8, CHR1='P', _OP_=:=, _O2_={, _EQ_=}:=, _pre2_=gc, "{e}=[1]", _BLOCK_=TestAssign)
|
||||
// gvp_sa_Byte := @gv_sa_Byte;
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc, pre__=gvp_sa_, "_OP_= {", "_O2_={ ", "//@@=} :=", _pre3_=@gv_sa_ ) // }
|
||||
|
||||
(* INIT: global var ARRAY [-1..2] OF <each type> *)
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc,pre__=gv_nsa_, ADD=9, CHR1='Q', _OP_=:=, _O2_={, _EQ_=}:=, _pre2_=gc, "{e}=[-1]", _BLOCK_=TestAssign)
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc,pre__=gv_nsa_, ADD=10, CHR1='R', _OP_=:=, _O2_={, _EQ_=}:=, _pre2_=gc, "{e}=[0]", _BLOCK_=TestAssign)
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc,pre__=gv_nsa_, ADD=11, CHR1='S', _OP_=:=, _O2_={, _EQ_=}:=, _pre2_=gc, "{e}=[1]", _BLOCK_=TestAssign)
|
||||
// gvp_nsa_Byte := @gv_nsa_Byte;
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc, pre__=gvp_nsa_, "_OP_= {", "_O2_={ ", "//@@=} :=", _pre3_=@gv_nsa_ ) // }
|
||||
|
||||
(* INIT: global var pointer <each type> *)
|
||||
TEST_PREPOCESS(WatchesValuePrgIdent.inc,pre__=gvp_, _OP_={, _O2_={, _pre3_=@gv, "//@@=} :=", _BLOCK_=TestVar, _BLOCK2_=TestPointer) //}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user