mirror of
https://gitlab.com/freepascal.org/fpc/pas2js.git
synced 2025-08-11 08:45:57 +02:00
pastojs: fixed test lpi
This commit is contained in:
commit
65bd7b6e58
@ -20534,6 +20534,8 @@ function TPasToJSConverter.CreateReferencePath(El: TPasElement;
|
|||||||
- auto created local var
|
- auto created local var
|
||||||
otherwise use absolute path
|
otherwise use absolute path
|
||||||
}
|
}
|
||||||
|
var
|
||||||
|
aResolver: TPas2JSResolver;
|
||||||
|
|
||||||
function IsLocalVar: boolean;
|
function IsLocalVar: boolean;
|
||||||
begin
|
begin
|
||||||
@ -20542,7 +20544,7 @@ function TPasToJSConverter.CreateReferencePath(El: TPasElement;
|
|||||||
exit(true);
|
exit(true);
|
||||||
if El.ClassType=TPasResultElement then
|
if El.ClassType=TPasResultElement then
|
||||||
exit(true);
|
exit(true);
|
||||||
if AContext.Resolver=nil then
|
if aResolver=nil then
|
||||||
exit(true);
|
exit(true);
|
||||||
if El.Parent=nil then
|
if El.Parent=nil then
|
||||||
RaiseNotSupported(El,AContext,20170203121306,GetObjName(El));
|
RaiseNotSupported(El,AContext,20170203121306,GetObjName(El));
|
||||||
@ -20614,7 +20616,7 @@ function TPasToJSConverter.CreateReferencePath(El: TPasElement;
|
|||||||
var
|
var
|
||||||
AbsolResolved: TPasResolverResult;
|
AbsolResolved: TPasResolverResult;
|
||||||
begin
|
begin
|
||||||
AContext.Resolver.ComputeElement(TPasVariable(El).AbsoluteExpr,AbsolResolved,[rcNoImplicitProc]);
|
aResolver.ComputeElement(TPasVariable(El).AbsoluteExpr,AbsolResolved,[rcNoImplicitProc]);
|
||||||
Result:=CreateReferencePath(AbsolResolved.IdentEl,AContext,Kind,Full,Ref);
|
Result:=CreateReferencePath(AbsolResolved.IdentEl,AContext,Kind,Full,Ref);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -20663,25 +20665,26 @@ begin
|
|||||||
//writeln('TPasToJSConverter.CreateReferencePath START El=',GetObjName(El),' Parent=',GetObjName(El.Parent),' Context=',GetObjName(AContext),' SelfContext=',GetObjName(AContext.GetSelfContext));
|
//writeln('TPasToJSConverter.CreateReferencePath START El=',GetObjName(El),' Parent=',GetObjName(El.Parent),' Context=',GetObjName(AContext),' SelfContext=',GetObjName(AContext.GetSelfContext));
|
||||||
//AContext.WriteStack;
|
//AContext.WriteStack;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
aResolver:=AContext.Resolver;
|
||||||
if (El is TPasType) and (AContext<>nil) then
|
if (El is TPasType) and (AContext<>nil) then
|
||||||
El:=AContext.Resolver.ResolveAliasType(TPasType(El));
|
El:=aResolver.ResolveAliasType(TPasType(El));
|
||||||
|
|
||||||
ElClass:=El.ClassType;
|
ElClass:=El.ClassType;
|
||||||
if ElClass.InheritsFrom(TPasVariable) and (TPasVariable(El).AbsoluteExpr<>nil)
|
if ElClass.InheritsFrom(TPasVariable) and (TPasVariable(El).AbsoluteExpr<>nil)
|
||||||
and (AContext.Resolver<>nil) then
|
and (aResolver<>nil) then
|
||||||
exit(GetAbsoluteAlias);
|
exit(GetAbsoluteAlias);
|
||||||
|
|
||||||
if AContext is TDotContext then
|
if AContext is TDotContext then
|
||||||
begin
|
begin
|
||||||
Dot:=TDotContext(AContext);
|
Dot:=TDotContext(AContext);
|
||||||
if Dot.Resolver<>nil then
|
if aResolver<>nil then
|
||||||
begin
|
begin
|
||||||
if ElClass.InheritsFrom(TPasVariable) then
|
if ElClass.InheritsFrom(TPasVariable) then
|
||||||
begin
|
begin
|
||||||
//writeln('TPasToJSConverter.CreateReferencePath Left=',GetResolverResultDbg(Dot.LeftResolved),' Right=class var ',GetObjName(El));
|
//writeln('TPasToJSConverter.CreateReferencePath Left=',GetResolverResultDbg(Dot.LeftResolved),' Right=class var ',GetObjName(El));
|
||||||
if ([vmClass,vmStatic]*ClassVarModifiersType*TPasVariable(El).VarModifiers<>[])
|
if ([vmClass,vmStatic]*ClassVarModifiersType*TPasVariable(El).VarModifiers<>[])
|
||||||
and (Dot.Access=caAssign)
|
and (Dot.Access=caAssign)
|
||||||
and Dot.Resolver.ResolvedElIsClassOrRecordInstance(Dot.LeftResolved) then
|
and aResolver.ResolvedElIsClassOrRecordInstance(Dot.LeftResolved) then
|
||||||
begin
|
begin
|
||||||
// writing a class var
|
// writing a class var
|
||||||
Append_GetClass(El);
|
Append_GetClass(El);
|
||||||
@ -20690,7 +20693,7 @@ begin
|
|||||||
else if IsClassFunction(El) then
|
else if IsClassFunction(El) then
|
||||||
begin
|
begin
|
||||||
if (not TPasProcedure(El).IsStatic)
|
if (not TPasProcedure(El).IsStatic)
|
||||||
and Dot.Resolver.ResolvedElIsClassOrRecordInstance(Dot.LeftResolved) then
|
and aResolver.ResolvedElIsClassOrRecordInstance(Dot.LeftResolved) then
|
||||||
// accessing a class method from an object, 'this' must be the class/record
|
// accessing a class method from an object, 'this' must be the class/record
|
||||||
Append_GetClass(El);
|
Append_GetClass(El);
|
||||||
end;
|
end;
|
||||||
@ -20805,7 +20808,7 @@ begin
|
|||||||
writeln('TPasToJSConverter.CreateReferencePath missing JS var for Self: El=',GetElementDbgPath(El),':',El.ClassName,' CurParentEl=',GetElementDbgPath(ParentEl),':',ParentEl.ClassName,' AContext:');
|
writeln('TPasToJSConverter.CreateReferencePath missing JS var for Self: El=',GetElementDbgPath(El),':',El.ClassName,' CurParentEl=',GetElementDbgPath(ParentEl),':',ParentEl.ClassName,' AContext:');
|
||||||
AContext.WriteStack;
|
AContext.WriteStack;
|
||||||
if Ref<>nil then
|
if Ref<>nil then
|
||||||
writeln('TPasToJSConverter.CreateReferencePath Ref=',GetObjName(Ref.Element),' at ',AContext.Resolver.GetElementSourcePosStr(Ref.Element));
|
writeln('TPasToJSConverter.CreateReferencePath Ref=',GetObjName(Ref.Element),' at ',aResolver.GetElementSourcePosStr(Ref.Element));
|
||||||
{AllowWriteln-}
|
{AllowWriteln-}
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
RaiseNotSupported(El,AContext,20180125004049);
|
RaiseNotSupported(El,AContext,20180125004049);
|
||||||
|
Loading…
Reference in New Issue
Block a user