Am 03.11.2017 um 15:31 schrieb Michael Van Canneyt:
> In this case, you can probably simply use
> TPasTreeContainer.FinishScope
> to record the end of the method.
Great, this is easy. I have created (and attached) a patch to add a
SourceEndLinenummer for all elements.
Maybe it is useful for others or even for the trunk.
Thanks for the help.
Michael
Index: packages/fcl-passrc/src/pastree.pp
===================================================================
--- packages/fcl-passrc/src/pastree.pp (Revision 37557)
+++ packages/fcl-passrc/src/pastree.pp (Arbeitskopie)
@@ -136,6 +136,7 @@
public
SourceFilename: string;
SourceLinenumber: Integer;
+ SourceEndLinenumber: Integer;
Visibility: TPasMemberVisibility;
public
constructor Create(const AName: string; AParent: TPasElement); virtual;
Index: packages/fcl-passrc/src/pparser.pp
===================================================================
--- packages/fcl-passrc/src/pparser.pp (Revision 37557)
+++ packages/fcl-passrc/src/pparser.pp (Arbeitskopie)
@@ -447,7 +447,7 @@
function ParseSource(AEngine: TPasTreeContainer;
const FPCCommandLine, OSTarget, CPUTarget: String;
Options : TParseSourceOptions): TPasModule;
-
+
Function IsHintToken(T : String; Out AHint : TPasMemberHint) : boolean;
Function IsProcModifier(S : String; Out PM : TProcedureModifier) : Boolean;
Function IsCallingConvention(S : String; out CC : TCallingConvention) : Boolean;
@@ -755,7 +755,7 @@
El: TPasElement);
begin
if ScopeType=stModule then ;
- if El=nil then ;
+ if El=nil then else El.SourceEndLinenumber := CurrentParser.CurSourcePos.Row;
end;
function TPasTreeContainer.FindModule(const AName: String): TPasModule;
@@ -2116,7 +2116,7 @@
Result:=Last;
func:=Last;
-
+
if Last.Kind<>pekSet then NextToken;
if not (Last.Kind in [pekNumber,pekString,pekSet,pekIdent,pekSelf,pekNil]) then
exit;
_______________________________________________
fpc-pascal maillist - [email protected]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal