mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-17 18:29:09 +02:00
pastojs: filer: restore method decl SelfArg
git-svn-id: trunk@47706 -
This commit is contained in:
parent
bf5a2a46de
commit
54627fe1e7
@ -21166,7 +21166,12 @@ var
|
|||||||
if ProcScope.ImplProc<>nil then
|
if ProcScope.ImplProc<>nil then
|
||||||
ProcScope:=ProcScope.ImplProc.CustomData as TPas2JSProcedureScope;
|
ProcScope:=ProcScope.ImplProc.CustomData as TPas2JSProcedureScope;
|
||||||
if ProcScope.SelfArg=nil then
|
if ProcScope.SelfArg=nil then
|
||||||
|
begin
|
||||||
|
{$IFDEF VerbosePas2JS}
|
||||||
|
writeln('CreateReference Proc=',GetObjPath(Proc),' Left=',GetObjPath(Left),' LeftResolved=',GetResolverResultDbg(LeftResolved),' ProcScope.DeclarationProc=',GetObjPath(ProcScope.DeclarationProc));
|
||||||
|
{$ENDIF}
|
||||||
RaiseNotSupported(PosEl,AContext,20190209214906,GetObjName(Proc));
|
RaiseNotSupported(PosEl,AContext,20190209214906,GetObjName(Proc));
|
||||||
|
end;
|
||||||
Result:=CreateProcCallArgRef(Left,LeftResolved,ProcScope.SelfArg,AContext);
|
Result:=CreateProcCallArgRef(Left,LeftResolved,ProcScope.SelfArg,AContext);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -4576,10 +4576,9 @@ begin
|
|||||||
RaiseMsg(20180219135933,Scope.Element);
|
RaiseMsg(20180219135933,Scope.Element);
|
||||||
AddReferenceToObj(Obj,'ImplProc',Scope.ImplProc);
|
AddReferenceToObj(Obj,'ImplProc',Scope.ImplProc);
|
||||||
AddReferenceToObj(Obj,'Overridden',Scope.OverriddenProc);
|
AddReferenceToObj(Obj,'Overridden',Scope.OverriddenProc);
|
||||||
// ClassOrRecordScope: TPasClassScope; auto derived
|
// ClassOrRecordScope is auto derived
|
||||||
if Scope.SelfArg<>nil then
|
// SelfArg is auto derived
|
||||||
RaiseMsg(20180211180457,Scope.Element); // SelfArg only valid for method implementation
|
// Mode is auto derived
|
||||||
// Mode: TModeSwitch: auto derived
|
|
||||||
WriteProcScopeFlags(Obj,'SFlags',Scope.Flags,[]);
|
WriteProcScopeFlags(Obj,'SFlags',Scope.Flags,[]);
|
||||||
WriteBoolSwitches(Obj,'BoolSwitches',Scope.BoolSwitches,aContext.BoolSwitches);
|
WriteBoolSwitches(Obj,'BoolSwitches',Scope.BoolSwitches,aContext.BoolSwitches);
|
||||||
WriteModeSwitches(Obj,'ModeSwitches',Scope.ModeSwitches,aContext.ModeSwitches);
|
WriteModeSwitches(Obj,'ModeSwitches',Scope.ModeSwitches,aContext.ModeSwitches);
|
||||||
@ -9492,12 +9491,15 @@ begin
|
|||||||
Scope.ClassRecScope:=Proc.Parent.CustomData as TPasClassOrRecordScope // no AddRef
|
Scope.ClassRecScope:=Proc.Parent.CustomData as TPasClassOrRecordScope // no AddRef
|
||||||
else
|
else
|
||||||
; // set via Set_ProcedureScope_ImplProc
|
; // set via Set_ProcedureScope_ImplProc
|
||||||
// Scope.SelfArg only valid for method implementation
|
|
||||||
|
|
||||||
Scope.Flags:=ReadProcScopeFlags(Obj,Proc,'SFlags',[]);
|
Scope.Flags:=ReadProcScopeFlags(Obj,Proc,'SFlags',[]);
|
||||||
Scope.BoolSwitches:=ReadBoolSwitches(Obj,Proc,'BoolSwitches',aContext.BoolSwitches);
|
Scope.BoolSwitches:=ReadBoolSwitches(Obj,Proc,'BoolSwitches',aContext.BoolSwitches);
|
||||||
Scope.ModeSwitches:=ReadModeSwitches(Obj,Proc,'ModeSwitches',aContext.ModeSwitches);
|
Scope.ModeSwitches:=ReadModeSwitches(Obj,Proc,'ModeSwitches',aContext.ModeSwitches);
|
||||||
|
|
||||||
|
// Scope.SelfArg
|
||||||
|
if (Scope.ClassRecScope<>nil) and (Scope.DeclarationProc=nil) then
|
||||||
|
Resolver.CreateProcSelfArg(Proc);
|
||||||
|
|
||||||
//ReadIdentifierScope(Obj,Scope,aContext);
|
//ReadIdentifierScope(Obj,Scope,aContext);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -9628,17 +9630,6 @@ begin
|
|||||||
|
|
||||||
El.ProcType:=TPasProcedureType(CreateElement(TPasProcedureTypeClass(DeclProc.ProcType.ClassType),'',El));
|
El.ProcType:=TPasProcedureType(CreateElement(TPasProcedureTypeClass(DeclProc.ProcType.ClassType),'',El));
|
||||||
El.Modifiers:=ReadProcedureModifiers(Obj,El,'PMods',DeclProc.Modifiers*PCUProcedureModifiersImplProc);
|
El.Modifiers:=ReadProcedureModifiers(Obj,El,'PMods',DeclProc.Modifiers*PCUProcedureModifiersImplProc);
|
||||||
|
|
||||||
if HasBody then
|
|
||||||
begin
|
|
||||||
// not a precompiled proc -> copy signature
|
|
||||||
//if El.ProcType is TPasFunctionType then
|
|
||||||
// begin
|
|
||||||
// FuncType:=TPasFunctionType(El.ProcType);
|
|
||||||
// FuncType.ResultEl:=TPasResultElement(CreateElement(TPasResultElement,
|
|
||||||
// TPasFunctionType(DeclProc.ProcType).ResultEl.Name,FuncType));
|
|
||||||
// end;
|
|
||||||
end;
|
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
@ -9671,6 +9662,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
DefProcMods:=GetDefaultProcModifiers(El);
|
DefProcMods:=GetDefaultProcModifiers(El);
|
||||||
El.Modifiers:=ReadProcedureModifiers(Obj,El,'PMods',DefProcMods);
|
El.Modifiers:=ReadProcedureModifiers(Obj,El,'PMods',DefProcMods);
|
||||||
|
|
||||||
// read ProcType after El.Modifiers
|
// read ProcType after El.Modifiers
|
||||||
El.ProcType:=TPasProcedureType(ReadElementProperty(
|
El.ProcType:=TPasProcedureType(ReadElementProperty(
|
||||||
Obj,El,'ProcType',TPasProcedureType,aContext));
|
Obj,El,'ProcType',TPasProcedureType,aContext));
|
||||||
|
Loading…
Reference in New Issue
Block a user