mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-13 16:59:11 +02:00
fcl-passrc: comments, analyzer option paoKeepPublished
git-svn-id: trunk@35715 -
This commit is contained in:
parent
bceb016f5f
commit
632b973ed6
@ -1052,6 +1052,7 @@ type
|
|||||||
procedure ResolveImplLabelMark(Mark: TPasImplLabelMark); virtual;
|
procedure ResolveImplLabelMark(Mark: TPasImplLabelMark); virtual;
|
||||||
procedure ResolveImplForLoop(Loop: TPasImplForLoop); virtual;
|
procedure ResolveImplForLoop(Loop: TPasImplForLoop); virtual;
|
||||||
procedure ResolveImplWithDo(El: TPasImplWithDo); virtual;
|
procedure ResolveImplWithDo(El: TPasImplWithDo); virtual;
|
||||||
|
procedure ResolveImplAsm(El: TPasImplAsmStatement); virtual;
|
||||||
procedure ResolveImplAssign(El: TPasImplAssign); virtual;
|
procedure ResolveImplAssign(El: TPasImplAssign); virtual;
|
||||||
procedure ResolveImplSimple(El: TPasImplSimple); virtual;
|
procedure ResolveImplSimple(El: TPasImplSimple); virtual;
|
||||||
procedure ResolveImplRaise(El: TPasImplRaise); virtual;
|
procedure ResolveImplRaise(El: TPasImplRaise); virtual;
|
||||||
@ -4178,56 +4179,60 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPasResolver.ResolveImplElement(El: TPasImplElement);
|
procedure TPasResolver.ResolveImplElement(El: TPasImplElement);
|
||||||
|
var
|
||||||
|
C: TClass;
|
||||||
begin
|
begin
|
||||||
//writeln('TPasResolver.ResolveImplElement ',GetObjName(El));
|
//writeln('TPasResolver.ResolveImplElement ',GetObjName(El));
|
||||||
if El=nil then
|
if El=nil then exit;
|
||||||
else if El.ClassType=TPasImplBeginBlock then
|
C:=El.ClassType;
|
||||||
|
if C=TPasImplBeginBlock then
|
||||||
ResolveImplBlock(TPasImplBeginBlock(El))
|
ResolveImplBlock(TPasImplBeginBlock(El))
|
||||||
else if El.ClassType=TPasImplAssign then
|
else if C=TPasImplAssign then
|
||||||
ResolveImplAssign(TPasImplAssign(El))
|
ResolveImplAssign(TPasImplAssign(El))
|
||||||
else if El.ClassType=TPasImplSimple then
|
else if C=TPasImplSimple then
|
||||||
ResolveImplSimple(TPasImplSimple(El))
|
ResolveImplSimple(TPasImplSimple(El))
|
||||||
else if El.ClassType=TPasImplBlock then
|
else if C=TPasImplBlock then
|
||||||
ResolveImplBlock(TPasImplBlock(El))
|
ResolveImplBlock(TPasImplBlock(El))
|
||||||
else if El.ClassType=TPasImplRepeatUntil then
|
else if C=TPasImplRepeatUntil then
|
||||||
begin
|
begin
|
||||||
ResolveImplBlock(TPasImplBlock(El));
|
ResolveImplBlock(TPasImplBlock(El));
|
||||||
ResolveStatementConditionExpr(TPasImplRepeatUntil(El).ConditionExpr);
|
ResolveStatementConditionExpr(TPasImplRepeatUntil(El).ConditionExpr);
|
||||||
end
|
end
|
||||||
else if El.ClassType=TPasImplIfElse then
|
else if C=TPasImplIfElse then
|
||||||
begin
|
begin
|
||||||
ResolveStatementConditionExpr(TPasImplIfElse(El).ConditionExpr);
|
ResolveStatementConditionExpr(TPasImplIfElse(El).ConditionExpr);
|
||||||
ResolveImplElement(TPasImplIfElse(El).IfBranch);
|
ResolveImplElement(TPasImplIfElse(El).IfBranch);
|
||||||
ResolveImplElement(TPasImplIfElse(El).ElseBranch);
|
ResolveImplElement(TPasImplIfElse(El).ElseBranch);
|
||||||
end
|
end
|
||||||
else if El.ClassType=TPasImplWhileDo then
|
else if C=TPasImplWhileDo then
|
||||||
begin
|
begin
|
||||||
ResolveStatementConditionExpr(TPasImplWhileDo(El).ConditionExpr);
|
ResolveStatementConditionExpr(TPasImplWhileDo(El).ConditionExpr);
|
||||||
ResolveImplElement(TPasImplWhileDo(El).Body);
|
ResolveImplElement(TPasImplWhileDo(El).Body);
|
||||||
end
|
end
|
||||||
else if El.ClassType=TPasImplCaseOf then
|
else if C=TPasImplCaseOf then
|
||||||
ResolveImplCaseOf(TPasImplCaseOf(El))
|
ResolveImplCaseOf(TPasImplCaseOf(El))
|
||||||
else if El.ClassType=TPasImplLabelMark then
|
else if C=TPasImplLabelMark then
|
||||||
ResolveImplLabelMark(TPasImplLabelMark(El))
|
ResolveImplLabelMark(TPasImplLabelMark(El))
|
||||||
else if El.ClassType=TPasImplForLoop then
|
else if C=TPasImplForLoop then
|
||||||
ResolveImplForLoop(TPasImplForLoop(El))
|
ResolveImplForLoop(TPasImplForLoop(El))
|
||||||
else if El.ClassType=TPasImplTry then
|
else if C=TPasImplTry then
|
||||||
begin
|
begin
|
||||||
ResolveImplBlock(TPasImplTry(El));
|
ResolveImplBlock(TPasImplTry(El));
|
||||||
ResolveImplBlock(TPasImplTry(El).FinallyExcept);
|
ResolveImplBlock(TPasImplTry(El).FinallyExcept);
|
||||||
ResolveImplBlock(TPasImplTry(El).ElseBranch);
|
ResolveImplBlock(TPasImplTry(El).ElseBranch);
|
||||||
end
|
end
|
||||||
else if El.ClassType=TPasImplExceptOn then
|
else if C=TPasImplExceptOn then
|
||||||
// handled in FinishExceptOnStatement
|
// handled in FinishExceptOnStatement
|
||||||
else if El.ClassType=TPasImplRaise then
|
else if C=TPasImplRaise then
|
||||||
ResolveImplRaise(TPasImplRaise(El))
|
ResolveImplRaise(TPasImplRaise(El))
|
||||||
else if El.ClassType=TPasImplCommand then
|
else if C=TPasImplCommand then
|
||||||
begin
|
begin
|
||||||
if TPasImplCommand(El).Command<>'' then
|
if TPasImplCommand(El).Command<>'' then
|
||||||
RaiseNotYetImplemented(20160922163442,El,'TPasResolver.ResolveImplElement');
|
RaiseNotYetImplemented(20160922163442,El,'TPasResolver.ResolveImplElement');
|
||||||
end
|
end
|
||||||
else if El.ClassType=TPasImplAsmStatement then
|
else if C=TPasImplAsmStatement then
|
||||||
else if El.ClassType=TPasImplWithDo then
|
ResolveImplAsm(TPasImplAsmStatement(El))
|
||||||
|
else if C=TPasImplWithDo then
|
||||||
ResolveImplWithDo(TPasImplWithDo(El))
|
ResolveImplWithDo(TPasImplWithDo(El))
|
||||||
else
|
else
|
||||||
RaiseNotYetImplemented(20160922163445,El,'TPasResolver.ResolveImplElement');
|
RaiseNotYetImplemented(20160922163445,El,'TPasResolver.ResolveImplElement');
|
||||||
@ -4399,6 +4404,11 @@ begin
|
|||||||
PopScope;
|
PopScope;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TPasResolver.ResolveImplAsm(El: TPasImplAsmStatement);
|
||||||
|
begin
|
||||||
|
if El=nil then ;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TPasResolver.ResolveImplAssign(El: TPasImplAssign);
|
procedure TPasResolver.ResolveImplAssign(El: TPasImplAssign);
|
||||||
var
|
var
|
||||||
LeftResolved, RightResolved: TPasResolverResult;
|
LeftResolved, RightResolved: TPasResolverResult;
|
||||||
|
@ -854,9 +854,9 @@ type
|
|||||||
public
|
public
|
||||||
ProcType : TPasProcedureType;
|
ProcType : TPasProcedureType;
|
||||||
Body : TProcedureBody;
|
Body : TProcedureBody;
|
||||||
PublicName,
|
PublicName, // e.g. public PublicName;
|
||||||
LibrarySymbolName,
|
LibrarySymbolName,
|
||||||
LibraryExpr : TPasExpr;
|
LibraryExpr : TPasExpr; // e.g. external LibraryExpr name LibrarySymbolName;
|
||||||
DispIDExpr : TPasExpr;
|
DispIDExpr : TPasExpr;
|
||||||
AliasName : String;
|
AliasName : String;
|
||||||
Procedure AddModifier(AModifier : TProcedureModifier);
|
Procedure AddModifier(AModifier : TProcedureModifier);
|
||||||
|
@ -147,7 +147,7 @@ type
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
TPasAnalyzerOption = (
|
TPasAnalyzerOption = (
|
||||||
paoAlwaysUsePublished, // when a class is used, all its published members are used as well
|
paoKeepPublished, // when a class is used, all its published members are used as well
|
||||||
paoOnlyExports // default: use all class members accessible from outside (protected, but not private)
|
paoOnlyExports // default: use all class members accessible from outside (protected, but not private)
|
||||||
);
|
);
|
||||||
TPasAnalyzerOptions = set of TPasAnalyzerOption;
|
TPasAnalyzerOptions = set of TPasAnalyzerOption;
|
||||||
@ -1112,7 +1112,7 @@ begin
|
|||||||
UseType(TPasType(El.Interfaces[i]),paumElement);
|
UseType(TPasType(El.Interfaces[i]),paumElement);
|
||||||
end;
|
end;
|
||||||
// members
|
// members
|
||||||
UsePublished:=(Mode<>paumAllExports) and (paoAlwaysUsePublished in Options);
|
UsePublished:=(Mode<>paumAllExports) and (paoKeepPublished in Options);
|
||||||
for i:=0 to El.Members.Count-1 do
|
for i:=0 to El.Members.Count-1 do
|
||||||
begin
|
begin
|
||||||
Member:=TPasElement(El.Members[i]);
|
Member:=TPasElement(El.Members[i]);
|
||||||
@ -1685,7 +1685,7 @@ begin
|
|||||||
if IsExport(El) then exit(false);
|
if IsExport(El) then exit(false);
|
||||||
case El.Visibility of
|
case El.Visibility of
|
||||||
visPrivate,visStrictPrivate: exit(true);
|
visPrivate,visStrictPrivate: exit(true);
|
||||||
visPublished: if paoAlwaysUsePublished in Options then exit(false);
|
visPublished: if paoKeepPublished in Options then exit(false);
|
||||||
end;
|
end;
|
||||||
Result:=IsModuleInternal(El.Parent);
|
Result:=IsModuleInternal(El.Parent);
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user