mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-17 17:09:09 +02:00
fcl-passrc: added TPasResolver.IsClassField
git-svn-id: trunk@40166 -
This commit is contained in:
parent
2070df21ac
commit
3f50c51225
@ -576,7 +576,7 @@ type
|
|||||||
constructor Create; reintroduce;
|
constructor Create; reintroduce;
|
||||||
procedure Add(const aName: string; Item: Pointer);
|
procedure Add(const aName: string; Item: Pointer);
|
||||||
function Find(const aName: string): Pointer;
|
function Find(const aName: string): Pointer;
|
||||||
procedure ForEachCall(Proc: TPasResIterate; Arg: Pointer);
|
procedure ForEachCall(const Proc: TPasResIterate; Arg: Pointer);
|
||||||
procedure Clear;
|
procedure Clear;
|
||||||
procedure Remove(const aName: string);
|
procedure Remove(const aName: string);
|
||||||
end;
|
end;
|
||||||
@ -810,7 +810,7 @@ type
|
|||||||
|
|
||||||
TPasInitialFinalizationScope = Class(TPasScope)
|
TPasInitialFinalizationScope = Class(TPasScope)
|
||||||
public
|
public
|
||||||
References: TPasScopeReferences; // created by TPasAnalyzer
|
References: TPasScopeReferences; // created by TPasAnalyzer, not used by resolver
|
||||||
function AddReference(El: TPasElement; Access: TPSRefAccess): TPasScopeReference;
|
function AddReference(El: TPasElement; Access: TPSRefAccess): TPasScopeReference;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
end;
|
end;
|
||||||
@ -1063,6 +1063,8 @@ type
|
|||||||
TPRResolveVarAccesses = set of TResolvedRefAccess;
|
TPRResolveVarAccesses = set of TResolvedRefAccess;
|
||||||
|
|
||||||
const
|
const
|
||||||
|
rraAllWrite = [rraAssign,rraReadAndAssign,rraVarParam,rraOutParam];
|
||||||
|
|
||||||
ResolvedToPSRefAccess: array[TResolvedRefAccess] of TPSRefAccess = (
|
ResolvedToPSRefAccess: array[TResolvedRefAccess] of TPSRefAccess = (
|
||||||
psraNone, // rraNone
|
psraNone, // rraNone
|
||||||
psraRead, // rraRead
|
psraRead, // rraRead
|
||||||
@ -1837,6 +1839,7 @@ type
|
|||||||
function IsVarInit(Expr: TPasExpr): boolean;
|
function IsVarInit(Expr: TPasExpr): boolean;
|
||||||
function IsEmptyArrayExpr(const ResolvedEl: TPasResolverResult): boolean;
|
function IsEmptyArrayExpr(const ResolvedEl: TPasResolverResult): boolean;
|
||||||
function IsClassMethod(El: TPasElement): boolean;
|
function IsClassMethod(El: TPasElement): boolean;
|
||||||
|
function IsClassField(El: TPasElement): boolean;
|
||||||
function IsExternalClass_Name(aClass: TPasClassType; const ExtName: string): boolean;
|
function IsExternalClass_Name(aClass: TPasClassType; const ExtName: string): boolean;
|
||||||
function IsProcedureType(const ResolvedEl: TPasResolverResult; HasValue: boolean): boolean;
|
function IsProcedureType(const ResolvedEl: TPasResolverResult; HasValue: boolean): boolean;
|
||||||
function IsArrayType(const ResolvedEl: TPasResolverResult): boolean;
|
function IsArrayType(const ResolvedEl: TPasResolverResult): boolean;
|
||||||
@ -2567,7 +2570,7 @@ begin
|
|||||||
Result:=nil;
|
Result:=nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPasResHashList.ForEachCall(Proc: TPasResIterate; Arg: Pointer);
|
procedure TPasResHashList.ForEachCall(const Proc: TPasResIterate; Arg: Pointer);
|
||||||
var
|
var
|
||||||
key: string;
|
key: string;
|
||||||
begin
|
begin
|
||||||
@ -20176,6 +20179,13 @@ begin
|
|||||||
or (C=TPasClassOperator);
|
or (C=TPasClassOperator);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TPasResolver.IsClassField(El: TPasElement): boolean;
|
||||||
|
begin
|
||||||
|
Result:=((El.ClassType=TPasVariable) or (El.ClassType=TPasConst))
|
||||||
|
and ([vmClass,vmStatic]*TPasVariable(El).VarModifiers<>[])
|
||||||
|
and (El.Parent is TPasClassType);
|
||||||
|
end;
|
||||||
|
|
||||||
function TPasResolver.IsExternalClass_Name(aClass: TPasClassType;
|
function TPasResolver.IsExternalClass_Name(aClass: TPasClassType;
|
||||||
const ExtName: string): boolean;
|
const ExtName: string): boolean;
|
||||||
var
|
var
|
||||||
|
Loading…
Reference in New Issue
Block a user