diff --git a/compiler/packages/pastojs/src/fppas2js.pp b/compiler/packages/pastojs/src/fppas2js.pp index 7b3c115..9ca5278 100644 --- a/compiler/packages/pastojs/src/fppas2js.pp +++ b/compiler/packages/pastojs/src/fppas2js.pp @@ -20534,6 +20534,8 @@ function TPasToJSConverter.CreateReferencePath(El: TPasElement; - auto created local var otherwise use absolute path } +var + aResolver: TPas2JSResolver; function IsLocalVar: boolean; begin @@ -20542,7 +20544,7 @@ function TPasToJSConverter.CreateReferencePath(El: TPasElement; exit(true); if El.ClassType=TPasResultElement then exit(true); - if AContext.Resolver=nil then + if aResolver=nil then exit(true); if El.Parent=nil then RaiseNotSupported(El,AContext,20170203121306,GetObjName(El)); @@ -20614,7 +20616,7 @@ function TPasToJSConverter.CreateReferencePath(El: TPasElement; var AbsolResolved: TPasResolverResult; begin - AContext.Resolver.ComputeElement(TPasVariable(El).AbsoluteExpr,AbsolResolved,[rcNoImplicitProc]); + aResolver.ComputeElement(TPasVariable(El).AbsoluteExpr,AbsolResolved,[rcNoImplicitProc]); Result:=CreateReferencePath(AbsolResolved.IdentEl,AContext,Kind,Full,Ref); end; @@ -20663,25 +20665,26 @@ begin //writeln('TPasToJSConverter.CreateReferencePath START El=',GetObjName(El),' Parent=',GetObjName(El.Parent),' Context=',GetObjName(AContext),' SelfContext=',GetObjName(AContext.GetSelfContext)); //AContext.WriteStack; {$ENDIF} + aResolver:=AContext.Resolver; if (El is TPasType) and (AContext<>nil) then - El:=AContext.Resolver.ResolveAliasType(TPasType(El)); + El:=aResolver.ResolveAliasType(TPasType(El)); ElClass:=El.ClassType; if ElClass.InheritsFrom(TPasVariable) and (TPasVariable(El).AbsoluteExpr<>nil) - and (AContext.Resolver<>nil) then + and (aResolver<>nil) then exit(GetAbsoluteAlias); if AContext is TDotContext then begin Dot:=TDotContext(AContext); - if Dot.Resolver<>nil then + if aResolver<>nil then begin if ElClass.InheritsFrom(TPasVariable) then begin //writeln('TPasToJSConverter.CreateReferencePath Left=',GetResolverResultDbg(Dot.LeftResolved),' Right=class var ',GetObjName(El)); if ([vmClass,vmStatic]*ClassVarModifiersType*TPasVariable(El).VarModifiers<>[]) and (Dot.Access=caAssign) - and Dot.Resolver.ResolvedElIsClassOrRecordInstance(Dot.LeftResolved) then + and aResolver.ResolvedElIsClassOrRecordInstance(Dot.LeftResolved) then begin // writing a class var Append_GetClass(El); @@ -20690,7 +20693,7 @@ begin else if IsClassFunction(El) then begin 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 Append_GetClass(El); 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:'); AContext.WriteStack; 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-} {$ENDIF} RaiseNotSupported(El,AContext,20180125004049);