|
@@ -205,7 +205,7 @@ type
|
|
tmvProtected, // 1
|
|
tmvProtected, // 1
|
|
tmvPublic, // 2
|
|
tmvPublic, // 2
|
|
tmvPublished, // 3
|
|
tmvPublished, // 3
|
|
- tmvPublishedPublic// 4, public for extended RTTI, published for basic RTTI, cvPublished was missing in the RTTI directive
|
|
|
|
|
|
+ tmvPublishedPublic// 4, public for extended RTTI, published for basic RTTI, vcPublished was missing in the RTTI directive
|
|
);
|
|
);
|
|
TTypeMemberVisibilities = set of TTypeMemberVisibility;
|
|
TTypeMemberVisibilities = set of TTypeMemberVisibility;
|
|
|
|
|
|
@@ -717,6 +717,7 @@ var
|
|
i: Integer;
|
|
i: Integer;
|
|
Names: TJSObject;
|
|
Names: TJSObject;
|
|
PropName: String;
|
|
PropName: String;
|
|
|
|
+ Prop: TTypeMemberProperty;
|
|
begin
|
|
begin
|
|
Result:=nil;
|
|
Result:=nil;
|
|
C:=aTIStruct;
|
|
C:=aTIStruct;
|
|
@@ -727,7 +728,9 @@ begin
|
|
begin
|
|
begin
|
|
PropName:=C.Properties[i];
|
|
PropName:=C.Properties[i];
|
|
if Names.hasOwnProperty(PropName) then continue;
|
|
if Names.hasOwnProperty(PropName) then continue;
|
|
- TJSArray(Result).push(TTypeMemberProperty(C.Members[PropName]));
|
|
|
|
|
|
+ Prop:=TTypeMemberProperty(C.Members[PropName]);
|
|
|
|
+ if Prop.Visibility<tmvPublished then continue;
|
|
|
|
+ TJSArray(Result).push(Prop);
|
|
Names[PropName]:=true;
|
|
Names[PropName]:=true;
|
|
end;
|
|
end;
|
|
if not (C is TTypeInfoClass) then
|
|
if not (C is TTypeInfoClass) then
|
|
@@ -767,6 +770,7 @@ begin
|
|
if Names.hasOwnProperty(PropName) then continue;
|
|
if Names.hasOwnProperty(PropName) then continue;
|
|
Prop:=TTypeMemberProperty(C.Members[PropName]);
|
|
Prop:=TTypeMemberProperty(C.Members[PropName]);
|
|
if not (Prop.TypeInfo.Kind in TypeKinds) then continue;
|
|
if not (Prop.TypeInfo.Kind in TypeKinds) then continue;
|
|
|
|
+ if Prop.Visibility<tmvPublished then continue;
|
|
TJSArray(Result).push(Prop);
|
|
TJSArray(Result).push(Prop);
|
|
Names[PropName]:=true;
|
|
Names[PropName]:=true;
|
|
end;
|
|
end;
|
|
@@ -799,6 +803,7 @@ var
|
|
m: TTypeMember;
|
|
m: TTypeMember;
|
|
i: Integer;
|
|
i: Integer;
|
|
C: TTypeInfoStruct;
|
|
C: TTypeInfoStruct;
|
|
|
|
+ Prop: TTypeMemberProperty;
|
|
begin
|
|
begin
|
|
// quick search case sensitive
|
|
// quick search case sensitive
|
|
C:=TI;
|
|
C:=TI;
|
|
@@ -806,7 +811,11 @@ begin
|
|
begin
|
|
begin
|
|
m:=C.Members[PropName];
|
|
m:=C.Members[PropName];
|
|
if m is TTypeMemberProperty then
|
|
if m is TTypeMemberProperty then
|
|
- exit(TTypeMemberProperty(m));
|
|
|
|
|
|
+ begin
|
|
|
|
+ Prop:=TTypeMemberProperty(m);
|
|
|
|
+ if Prop.Visibility>=tmvPublished then
|
|
|
|
+ exit(Prop);
|
|
|
|
+ end;
|
|
if not (C is TTypeInfoClass) then
|
|
if not (C is TTypeInfoClass) then
|
|
break;
|
|
break;
|
|
C:=TTypeInfoClass(C).Ancestor;
|
|
C:=TTypeInfoClass(C).Ancestor;
|
|
@@ -820,8 +829,11 @@ begin
|
|
begin
|
|
begin
|
|
m:=TI.Members[TI.Properties[i]];
|
|
m:=TI.Members[TI.Properties[i]];
|
|
if m is TTypeMemberProperty then
|
|
if m is TTypeMemberProperty then
|
|
- Result:=TTypeMemberProperty(m);
|
|
|
|
- exit;
|
|
|
|
|
|
+ begin
|
|
|
|
+ Prop:=TTypeMemberProperty(m);
|
|
|
|
+ if Prop.Visibility>=tmvPublished then
|
|
|
|
+ exit(Prop);
|
|
|
|
+ end;
|
|
end;
|
|
end;
|
|
if not (TI is TTypeInfoClass) then
|
|
if not (TI is TTypeInfoClass) then
|
|
break;
|
|
break;
|