mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-24 23:29:15 +02:00
pastojs: use UsesClause instead of UsesList
git-svn-id: trunk@36085 -
This commit is contained in:
parent
91ed2c4d9d
commit
a358fec12b
@ -1146,6 +1146,7 @@ type
|
|||||||
Function IsPreservedWord(const aName: string): boolean; virtual;
|
Function IsPreservedWord(const aName: string): boolean; virtual;
|
||||||
// Never create an element manually, always use the below functions
|
// Never create an element manually, always use the below functions
|
||||||
Function IsElementUsed(El: TPasElement): boolean; virtual;
|
Function IsElementUsed(El: TPasElement): boolean; virtual;
|
||||||
|
Function IsSystemUnit(aModule: TPasModule): boolean; virtual;
|
||||||
Function HasTypeInfo(El: TPasType; AContext: TConvertContext): boolean; virtual;
|
Function HasTypeInfo(El: TPasType; AContext: TConvertContext): boolean; virtual;
|
||||||
Function IsClassRTTICreatedBefore(aClass: TPasClassType; Before: TPasElement): boolean;
|
Function IsClassRTTICreatedBefore(aClass: TPasClassType; Before: TPasElement): boolean;
|
||||||
Function CreateElement(C: TJSElementClass; Src: TPasElement): TJSElement; virtual;
|
Function CreateElement(C: TJSElementClass; Src: TPasElement): TJSElement; virtual;
|
||||||
@ -3411,8 +3412,8 @@ Var
|
|||||||
ModuleName, ModVarName: String;
|
ModuleName, ModVarName: String;
|
||||||
IntfContext: TSectionContext;
|
IntfContext: TSectionContext;
|
||||||
ImplVarSt: TJSVariableStatement;
|
ImplVarSt: TJSVariableStatement;
|
||||||
HasImplUsesList: Boolean;
|
HasImplUsesClause: Boolean;
|
||||||
UsesList: TFPList;
|
UsesClause: TPasUsesClause;
|
||||||
begin
|
begin
|
||||||
Result:=Nil;
|
Result:=Nil;
|
||||||
OuterSrc:=TJSSourceElements(CreateElement(TJSSourceElements, El));
|
OuterSrc:=TJSSourceElements(CreateElement(TJSSourceElements, El));
|
||||||
@ -3448,7 +3449,7 @@ begin
|
|||||||
AddToSourceElements(Src,CreateLiteralString(El,'use strict'));
|
AddToSourceElements(Src,CreateLiteralString(El,'use strict'));
|
||||||
|
|
||||||
ImplVarSt:=nil;
|
ImplVarSt:=nil;
|
||||||
HasImplUsesList:=false;
|
HasImplUsesClause:=false;
|
||||||
|
|
||||||
IntfContext:=TSectionContext.Create(El,Src,AContext);
|
IntfContext:=TSectionContext.Create(El,Src,AContext);
|
||||||
try
|
try
|
||||||
@ -3489,11 +3490,11 @@ begin
|
|||||||
// add optional implementation uses list: [<implementation uses1>,<uses2>, ...]
|
// add optional implementation uses list: [<implementation uses1>,<uses2>, ...]
|
||||||
if Assigned(El.ImplementationSection) then
|
if Assigned(El.ImplementationSection) then
|
||||||
begin
|
begin
|
||||||
UsesList:=El.ImplementationSection.UsesList;
|
UsesClause:=El.ImplementationSection.UsesClause;
|
||||||
if (UsesList<>nil) and (UsesList.Count>0) then
|
if length(UsesClause)>0 then
|
||||||
begin
|
begin
|
||||||
ArgArray.Elements.AddElement.Expr:=CreateUsesList(El.ImplementationSection,AContext);
|
ArgArray.Elements.AddElement.Expr:=CreateUsesList(El.ImplementationSection,AContext);
|
||||||
HasImplUsesList:=true;
|
HasImplUsesClause:=true;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -3514,7 +3515,7 @@ begin
|
|||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
// add param
|
// add param
|
||||||
if not HasImplUsesList then
|
if not HasImplUsesClause then
|
||||||
ArgArray.Elements.AddElement.Expr:=CreateLiteralNull(El);
|
ArgArray.Elements.AddElement.Expr:=CreateLiteralNull(El);
|
||||||
ArgArray.Elements.AddElement.Expr:=ImplFunc;
|
ArgArray.Elements.AddElement.Expr:=ImplFunc;
|
||||||
end;
|
end;
|
||||||
@ -9932,6 +9933,11 @@ begin
|
|||||||
Result:=true;
|
Result:=true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TPasToJSConverter.IsSystemUnit(aModule: TPasModule): boolean;
|
||||||
|
begin
|
||||||
|
Result:=CompareText(aModule.Name,'system')=0;
|
||||||
|
end;
|
||||||
|
|
||||||
function TPasToJSConverter.HasTypeInfo(El: TPasType; AContext: TConvertContext
|
function TPasToJSConverter.HasTypeInfo(El: TPasType; AContext: TConvertContext
|
||||||
): boolean;
|
): boolean;
|
||||||
begin
|
begin
|
||||||
@ -10031,25 +10037,23 @@ function TPasToJSConverter.CreateUsesList(UsesSection: TPasSection;
|
|||||||
AContext: TConvertContext): TJSArrayLiteral;
|
AContext: TConvertContext): TJSArrayLiteral;
|
||||||
var
|
var
|
||||||
ArgArray: TJSArrayLiteral;
|
ArgArray: TJSArrayLiteral;
|
||||||
k: Integer;
|
i: Integer;
|
||||||
El: TPasElement;
|
|
||||||
anUnitName: String;
|
anUnitName: String;
|
||||||
ArgEx: TJSLiteral;
|
ArgEx: TJSLiteral;
|
||||||
UsesList: TFPList;
|
UsesClause: TPasUsesClause;
|
||||||
|
aModule: TPasModule;
|
||||||
begin
|
begin
|
||||||
UsesList:=UsesSection.UsesList;
|
UsesClause:=UsesSection.UsesClause;
|
||||||
ArgArray:=TJSArrayLiteral.Create(0,0);
|
ArgArray:=TJSArrayLiteral.Create(0,0);
|
||||||
if UsesList<>nil then
|
for i:=0 to length(UsesClause)-1 do
|
||||||
for k:=0 to UsesList.Count-1 do
|
begin
|
||||||
begin
|
aModule:=UsesClause[i].Module as TPasModule;
|
||||||
El:=TPasElement(UsesList[k]);
|
if (not IsElementUsed(aModule)) and not IsSystemUnit(aModule) then
|
||||||
if not (El is TPasModule) then continue;
|
continue;
|
||||||
if (not IsElementUsed(El)) and (CompareText('system',El.Name)<>0) then
|
anUnitName := TransformVariableName(aModule,AContext);
|
||||||
continue;
|
ArgEx := CreateLiteralString(UsesSection,anUnitName);
|
||||||
anUnitName := TransformVariableName(TPasModule(El),AContext);
|
ArgArray.Elements.AddElement.Expr := ArgEx;
|
||||||
ArgEx := CreateLiteralString(UsesSection,anUnitName);
|
end;
|
||||||
ArgArray.Elements.AddElement.Expr := ArgEx;
|
|
||||||
end;
|
|
||||||
Result:=ArgArray;
|
Result:=ArgArray;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user