diff --git a/packages/pastojs/src/fppas2js.pp b/packages/pastojs/src/fppas2js.pp index 9f9f2065be..53b2be380d 100644 --- a/packages/pastojs/src/fppas2js.pp +++ b/packages/pastojs/src/fppas2js.pp @@ -2850,14 +2850,13 @@ begin if ParentC=TProcedureBody then begin // local var - if (AbsIdent.Parent=El.Parent) - or ((AbsIdent is TPasArgument) - and (AbsIdent.Parent.Parent=El.Parent.Parent)) then + if (AbsIdent.Parent is TProcedureBody) + or (AbsIdent is TPasArgument) then // ok else begin {$IFDEF VerbosePas2JS} - writeln('TPas2JSResolver.FinishVariable absolute: Parent=',GetObjName(El.Parent),' AbsParent=',GetObjName(AbsIdent.Parent)); + writeln('TPas2JSResolver.FinishVariable absolute: El.Parent=',GetObjName(El.Parent),'.Parent=',GetObjName(El.Parent.Parent),' AbsParent=',GetObjName(AbsIdent.Parent),'.Parent=',GetObjName(AbsIdent.Parent.Parent)); {$ENDIF} RaiseMsg(20171226102424,nInvalidAbsoluteLocation,sInvalidAbsoluteLocation,[],El.AbsoluteExpr); end; diff --git a/packages/pastojs/tests/tcmodules.pas b/packages/pastojs/tests/tcmodules.pas index 2533aba7ff..df29bec203 100644 --- a/packages/pastojs/tests/tcmodules.pas +++ b/packages/pastojs/tests/tcmodules.pas @@ -3829,16 +3829,25 @@ begin 'type', ' TObject = class', ' Index: longint;', + ' procedure DoAbs(Item: pointer);', ' end;', - 'procedure DoIt(i: longint);', + 'procedure TObject.DoAbs(Item: pointer);', + 'var', + ' o: TObject absolute Item;', + 'begin', + ' if o.Index