|
@@ -323,9 +323,6 @@ type
|
|
Procedure TestArray_DynArrayConst;
|
|
Procedure TestArray_DynArrayConst;
|
|
Procedure TestExternalClass_TypeCastArrayToExternalArray;
|
|
Procedure TestExternalClass_TypeCastArrayToExternalArray;
|
|
Procedure TestExternalClass_TypeCastArrayFromExternalArray;
|
|
Procedure TestExternalClass_TypeCastArrayFromExternalArray;
|
|
- // ToDo: static array const
|
|
|
|
- // ToDo: SetLength(array of static array)
|
|
|
|
- // ToDo: SetLength(dim1,dim2)
|
|
|
|
|
|
|
|
// record
|
|
// record
|
|
Procedure TestRecord_Var;
|
|
Procedure TestRecord_Var;
|
|
@@ -504,6 +501,7 @@ type
|
|
Procedure TestRTTI_PublishedFieldExternalFail;
|
|
Procedure TestRTTI_PublishedFieldExternalFail;
|
|
Procedure TestRTTI_StoredModifier;
|
|
Procedure TestRTTI_StoredModifier;
|
|
Procedure TestRTTI_DefaultValue;
|
|
Procedure TestRTTI_DefaultValue;
|
|
|
|
+ Procedure TestRTTI_DefaultValueSet;
|
|
Procedure TestRTTI_Class_Field;
|
|
Procedure TestRTTI_Class_Field;
|
|
Procedure TestRTTI_Class_Method;
|
|
Procedure TestRTTI_Class_Method;
|
|
Procedure TestRTTI_Class_MethodArgFlags;
|
|
Procedure TestRTTI_Class_MethodArgFlags;
|
|
@@ -13377,13 +13375,15 @@ end;
|
|
|
|
|
|
procedure TTestModule.TestRTTI_DefaultValue;
|
|
procedure TTestModule.TestRTTI_DefaultValue;
|
|
begin
|
|
begin
|
|
|
|
+ Converter.Options:=Converter.Options-[coNoTypeInfo];
|
|
StartProgram(false);
|
|
StartProgram(false);
|
|
Add([
|
|
Add([
|
|
|
|
+ 'type',
|
|
|
|
+ ' TEnum = (red, blue);',
|
|
'const',
|
|
'const',
|
|
' CB = true or false;',
|
|
' CB = true or false;',
|
|
' CI = 1+2;',
|
|
' CI = 1+2;',
|
|
'type',
|
|
'type',
|
|
- ' TEnum = (red, blue);',
|
|
|
|
' TObject = class',
|
|
' TObject = class',
|
|
' FB: boolean;',
|
|
' FB: boolean;',
|
|
' FI: longint;',
|
|
' FI: longint;',
|
|
@@ -13401,14 +13401,19 @@ begin
|
|
ConvertProgram;
|
|
ConvertProgram;
|
|
CheckSource('TestRTTI_DefaultValue',
|
|
CheckSource('TestRTTI_DefaultValue',
|
|
LinesToStr([ // statements
|
|
LinesToStr([ // statements
|
|
- 'this.CB = true || false;',
|
|
|
|
- 'this.CI = 1 + 2;',
|
|
|
|
'this.TEnum = {',
|
|
'this.TEnum = {',
|
|
' "0": "red",',
|
|
' "0": "red",',
|
|
' red: 0,',
|
|
' red: 0,',
|
|
' "1": "blue",',
|
|
' "1": "blue",',
|
|
' blue: 1',
|
|
' blue: 1',
|
|
'};',
|
|
'};',
|
|
|
|
+ '$mod.$rtti.$Enum("TEnum", {',
|
|
|
|
+ ' minvalue: 0,',
|
|
|
|
+ ' maxvalue: 1,',
|
|
|
|
+ ' enumtype: this.TEnum',
|
|
|
|
+ '});',
|
|
|
|
+ 'this.CB = true || false;',
|
|
|
|
+ 'this.CI = 1 + 2;',
|
|
'rtl.createClass($mod, "TObject", null, function () {',
|
|
'rtl.createClass($mod, "TObject", null, function () {',
|
|
' this.$init = function () {',
|
|
' this.$init = function () {',
|
|
' this.FB = false;',
|
|
' this.FB = false;',
|
|
@@ -13494,6 +13499,98 @@ begin
|
|
'']));
|
|
'']));
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+procedure TTestModule.TestRTTI_DefaultValueSet;
|
|
|
|
+begin
|
|
|
|
+ Converter.Options:=Converter.Options-[coNoTypeInfo];
|
|
|
|
+ StartProgram(false);
|
|
|
|
+ Add([
|
|
|
|
+ 'type',
|
|
|
|
+ ' TEnum = (red, blue);',
|
|
|
|
+ ' TSet = set of TEnum;',
|
|
|
|
+ 'const',
|
|
|
|
+ ' CSet = [red,blue];',
|
|
|
|
+ 'type',
|
|
|
|
+ ' TObject = class',
|
|
|
|
+ ' FSet: TSet;',
|
|
|
|
+ ' published',
|
|
|
|
+ ' property Set1: TSet read FSet default [];',
|
|
|
|
+ ' property Set2: TSet read FSet default [red];',
|
|
|
|
+ ' property Set3: TSet read FSet default [red,blue];',
|
|
|
|
+ ' property Set4: TSet read FSet default CSet;',
|
|
|
|
+ ' end;',
|
|
|
|
+ 'begin']);
|
|
|
|
+ ConvertProgram;
|
|
|
|
+ CheckSource('TestRTTI_DefaultValueSet',
|
|
|
|
+ LinesToStr([ // statements
|
|
|
|
+ 'this.TEnum = {',
|
|
|
|
+ ' "0": "red",',
|
|
|
|
+ ' red: 0,',
|
|
|
|
+ ' "1": "blue",',
|
|
|
|
+ ' blue: 1',
|
|
|
|
+ '};',
|
|
|
|
+ '$mod.$rtti.$Enum("TEnum", {',
|
|
|
|
+ ' minvalue: 0,',
|
|
|
|
+ ' maxvalue: 1,',
|
|
|
|
+ ' enumtype: this.TEnum',
|
|
|
|
+ '});',
|
|
|
|
+ '$mod.$rtti.$Set("TSet", {',
|
|
|
|
+ ' comptype: $mod.$rtti["TEnum"]',
|
|
|
|
+ '});',
|
|
|
|
+ 'this.CSet = rtl.createSet($mod.TEnum.red, $mod.TEnum.blue);',
|
|
|
|
+ 'rtl.createClass($mod, "TObject", null, function () {',
|
|
|
|
+ ' this.$init = function () {',
|
|
|
|
+ ' this.FSet = {};',
|
|
|
|
+ ' };',
|
|
|
|
+ ' this.$final = function () {',
|
|
|
|
+ ' this.FSet = undefined;',
|
|
|
|
+ ' };',
|
|
|
|
+ ' var $r = this.$rtti;',
|
|
|
|
+ ' $r.addProperty(',
|
|
|
|
+ ' "Set1",',
|
|
|
|
+ ' 0,',
|
|
|
|
+ ' $mod.$rtti["TSet"],',
|
|
|
|
+ ' "FSet",',
|
|
|
|
+ ' "",',
|
|
|
|
+ ' {',
|
|
|
|
+ ' Default: {}',
|
|
|
|
+ ' }',
|
|
|
|
+ ' );',
|
|
|
|
+ ' $r.addProperty(',
|
|
|
|
+ ' "Set2",',
|
|
|
|
+ ' 0,',
|
|
|
|
+ ' $mod.$rtti["TSet"],',
|
|
|
|
+ ' "FSet",',
|
|
|
|
+ ' "",',
|
|
|
|
+ ' {',
|
|
|
|
+ ' Default: rtl.createSet($mod.TEnum.red)',
|
|
|
|
+ ' }',
|
|
|
|
+ ' );',
|
|
|
|
+ ' $r.addProperty(',
|
|
|
|
+ ' "Set3",',
|
|
|
|
+ ' 0,',
|
|
|
|
+ ' $mod.$rtti["TSet"],',
|
|
|
|
+ ' "FSet",',
|
|
|
|
+ ' "",',
|
|
|
|
+ ' {',
|
|
|
|
+ ' Default: rtl.createSet($mod.TEnum.red, $mod.TEnum.blue)',
|
|
|
|
+ ' }',
|
|
|
|
+ ' );',
|
|
|
|
+ ' $r.addProperty(',
|
|
|
|
+ ' "Set4",',
|
|
|
|
+ ' 0,',
|
|
|
|
+ ' $mod.$rtti["TSet"],',
|
|
|
|
+ ' "FSet",',
|
|
|
|
+ ' "",',
|
|
|
|
+ ' {',
|
|
|
|
+ ' Default: $mod.CSet',
|
|
|
|
+ ' }',
|
|
|
|
+ ' );',
|
|
|
|
+ '});',
|
|
|
|
+ '']),
|
|
|
|
+ LinesToStr([ // $mod.$main
|
|
|
|
+ '']));
|
|
|
|
+end;
|
|
|
|
+
|
|
procedure TTestModule.TestRTTI_Class_Field;
|
|
procedure TTestModule.TestRTTI_Class_Field;
|
|
begin
|
|
begin
|
|
Converter.Options:=Converter.Options-[coNoTypeInfo];
|
|
Converter.Options:=Converter.Options-[coNoTypeInfo];
|