mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-13 11:24:14 +02:00
Fix for external class declared inside another external class.
This commit is contained in:
parent
6f8fb64d36
commit
9120ef74e5
@ -16343,14 +16343,19 @@ function TPasToJSConverter.ConvertExtClassType(El: TPasClassType;
|
||||
// jsclass: "Object"
|
||||
// });
|
||||
var
|
||||
A: Integer;
|
||||
TIObj: TJSObjectLiteral;
|
||||
Call: TJSCallExpression;
|
||||
TIProp: TJSObjectLiteralElement;
|
||||
ClassScope: TPas2JSClassScope;
|
||||
AncestorType: TPasClassType;
|
||||
aResolver: TPas2JSResolver;
|
||||
St: TJSStatementList;
|
||||
MemberElement: TPasElement;
|
||||
|
||||
begin
|
||||
Result:=nil;
|
||||
|
||||
if not El.IsExternal then
|
||||
RaiseNotSupported(El,AContext,20191027183236);
|
||||
|
||||
@ -16387,7 +16392,20 @@ begin
|
||||
TIProp:=TIObj.Elements.AddElement;
|
||||
TIProp.Name:=TJSString(GetBIName(pbivnRTTIExtClass_JSClass));
|
||||
TIProp.Expr:=CreateLiteralString(El,TPasClassType(El).ExternalName);
|
||||
Result:=Call;
|
||||
St:=TJSStatementList(CreateElement(TJSStatementList,El));
|
||||
St.A := Call;
|
||||
Result:=St;
|
||||
|
||||
for A := 0 to Pred(El.Members.Count) do
|
||||
begin
|
||||
MemberElement := El.Members[A];
|
||||
if (MemberElement is TPasClassType) and not (TPasClassType(MemberElement).IsForward) then
|
||||
begin
|
||||
St.B := ConvertExtClassType(TPasClassType(MemberElement), AContext);
|
||||
|
||||
St := St.B as TJSStatementList;
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
if Result=nil then
|
||||
Call.Free;
|
||||
|
Loading…
Reference in New Issue
Block a user