|
@@ -842,6 +842,7 @@ type
|
|
|
procedure Set_SetType_EnumType(RefEl: TPasElement; Data: TObject);
|
|
|
procedure Set_Variant_Members(RefEl: TPasElement; Data: TObject);
|
|
|
procedure Set_RecordType_VariantEl(RefEl: TPasElement; Data: TObject);
|
|
|
+ procedure Set_RecordScope_DefaultProperty(RefEl: TPasElement; Data: TObject);
|
|
|
procedure Set_Argument_ArgType(RefEl: TPasElement; Data: TObject);
|
|
|
procedure Set_ClassScope_NewInstanceFunction(RefEl: TPasElement; Data: TObject);
|
|
|
procedure Set_ClassScope_DirectAncestor(RefEl: TPasElement; Data: TObject);
|
|
@@ -1699,11 +1700,11 @@ var
|
|
|
El: TPasElement;
|
|
|
begin
|
|
|
El:=Scope.Element;
|
|
|
- if El is TPasClassType then
|
|
|
+ if El is TPasMembersType then
|
|
|
Result:=El
|
|
|
else if El is TPasModule then
|
|
|
Result:=El
|
|
|
- else if (Scope is TPasProcedureScope) and (Scope.Element.Parent is TPasClassType) then
|
|
|
+ else if (Scope is TPasProcedureScope) and (Scope.Element.Parent is TPasMembersType) then
|
|
|
Result:=Scope.Element.Parent
|
|
|
else
|
|
|
Result:=nil;
|
|
@@ -3324,6 +3325,7 @@ end;
|
|
|
procedure TPCUWriter.WriteRecordTypeScope(Obj: TJSONObject;
|
|
|
Scope: TPasRecordScope; aContext: TPCUWriterContext);
|
|
|
begin
|
|
|
+ AddReferenceToObj(Obj,'DefaultProperty',Scope.DefaultProperty);
|
|
|
WriteIdentifierScope(Obj,Scope,aContext);
|
|
|
end;
|
|
|
|
|
@@ -3829,10 +3831,9 @@ begin
|
|
|
C:=Parent.ClassType;
|
|
|
if C.InheritsFrom(TPasDeclarations) then
|
|
|
WriteMemberIndex(TPasDeclarations(Parent).Declarations,Ref.Element,Ref.Obj)
|
|
|
- else if C=TPasClassType then
|
|
|
- WriteMemberIndex(TPasClassType(Parent).Members,Ref.Element,Ref.Obj)
|
|
|
- else if C=TPasRecordType then
|
|
|
- WriteMemberIndex(TPasRecordType(Parent).Members,Ref.Element,Ref.Obj)
|
|
|
+ else if (C=TPasClassType)
|
|
|
+ or (C=TPasRecordType) then
|
|
|
+ WriteMemberIndex(TPasMembersType(Parent).Members,Ref.Element,Ref.Obj)
|
|
|
else if C=TPasEnumType then
|
|
|
WriteMemberIndex(TPasEnumType(Parent).Values,Ref.Element,Ref.Obj)
|
|
|
else if C.InheritsFrom(TPasModule) then
|
|
@@ -4212,6 +4213,17 @@ begin
|
|
|
RaiseMsg(20180210205031,El,GetObjName(RefEl));
|
|
|
end;
|
|
|
|
|
|
+procedure TPCUReader.Set_RecordScope_DefaultProperty(RefEl: TPasElement;
|
|
|
+ Data: TObject);
|
|
|
+var
|
|
|
+ Scope: TPasRecordScope absolute Data;
|
|
|
+begin
|
|
|
+ if RefEl is TPasProperty then
|
|
|
+ Scope.DefaultProperty:=TPasProperty(RefEl) // no AddRef
|
|
|
+ else
|
|
|
+ RaiseMsg(20190106213412,Scope.Element,GetObjName(RefEl));
|
|
|
+end;
|
|
|
+
|
|
|
procedure TPCUReader.Set_Argument_ArgType(RefEl: TPasElement; Data: TObject);
|
|
|
var
|
|
|
El: TPasArgument absolute Data;
|
|
@@ -5230,10 +5242,8 @@ begin
|
|
|
begin
|
|
|
if El is TPasDeclarations then
|
|
|
ReadExternalMembers(El,Arr,TPasDeclarations(El).Declarations)
|
|
|
- else if El is TPasClassType then
|
|
|
- ReadExternalMembers(El,Arr,TPasClassType(El).Members)
|
|
|
- else if El is TPasRecordType then
|
|
|
- ReadExternalMembers(El,Arr,TPasRecordType(El).Members)
|
|
|
+ else if El is TPasMembersType then
|
|
|
+ ReadExternalMembers(El,Arr,TPasMembersType(El).Members)
|
|
|
else if El is TPasEnumType then
|
|
|
ReadExternalMembers(El,Arr,TPasEnumType(El).Values)
|
|
|
else if El is TPasModule then
|
|
@@ -5459,9 +5469,7 @@ begin
|
|
|
Section.ResStrings.Add(El)
|
|
|
else if C=TPasConst then
|
|
|
Section.Consts.Add(El)
|
|
|
- else if C=TPasClassType then
|
|
|
- Section.Classes.Add(El)
|
|
|
- else if C=TPasRecordType then
|
|
|
+ else if (C=TPasClassType) or (C=TPasRecordType) then
|
|
|
Section.Classes.Add(El)
|
|
|
else if C.InheritsFrom(TPasType) then
|
|
|
// not TPasClassType, TPasRecordType !
|
|
@@ -6615,6 +6623,7 @@ end;
|
|
|
procedure TPCUReader.ReadRecordScope(Obj: TJSONObject; Scope: TPasRecordScope;
|
|
|
aContext: TPCUReaderContext);
|
|
|
begin
|
|
|
+ ReadElementReference(Obj,Scope,'DefaultProperty',@Set_RecordScope_DefaultProperty);
|
|
|
ReadIdentifierScope(Obj,Scope,aContext);
|
|
|
end;
|
|
|
|
|
@@ -7313,8 +7322,8 @@ begin
|
|
|
// Scope.OverloadName is already set in ReadProcedure
|
|
|
ReadElementReference(Obj,Scope,'ImplProc',@Set_ProcedureScope_ImplProc);
|
|
|
ReadElementReference(Obj,Scope,'Overridden',@Set_ProcedureScope_Overridden);
|
|
|
- if Proc.Parent is TPasClassType then
|
|
|
- Scope.ClassScope:=Proc.Parent.CustomData as TPas2JSClassScope; // no AddRef
|
|
|
+ if Proc.Parent is TPasMembersType then
|
|
|
+ Scope.ClassOrRecordScope:=Proc.Parent.CustomData as TPasClassOrRecordScope; // no AddRef
|
|
|
// ClassScope: TPasClassScope; auto derived
|
|
|
// Scope.SelfArg only valid for method implementation
|
|
|
|