[fpc-devel] MakeSkel etc. programs

Michael Van Canneyt michael at freepascal.org
Wed Dec 14 23:40:46 CET 2011

On Wed, 14 Dec 2011, Hans-Peter Diettrich wrote:

> I just tried to extend the programs in the fpdoc folder, morphing the program 
> files into unit files by conditional compilation:
> {$IFDEF DoDi}
> unit ...;
> interface
> {$ELSE}
> program ...;
> {$ENDIF}
> etc., no problem so far.
> Then I wrote my own MkSkel program, using MakeSkel as a unit. Also fine :-)
> Then I tried to extend the functionality with wildcards, what also worked 
> fine after some more adjustments. E.g. I added an OnOption handler, that 
> handles additional commandline options, which are not recognized by the 
> ParseOption procedure.
> BTW is it really required to add "-Fi.", so that the parser finds include 
> files in the current directory (of the unit file)?

To my knowledge, it should not be necessary ?

> When I tried to create the skeletons for all *.pas and *.pp files, I stumbled 
> across exceptions with missing interface sections. It would be nice to 
> prevent such exceptions, when MakeSkel tries to process an program file, 
> whereupon AModule.InterfaceSection is Nil!

makeskel or fpdoc were not designed to be run on programs, so the errors are normal.

> Then I was very astonished about "No Interface section in MakeSkel" messages, 
> and it took me some time to find the bug in UnitDiff.pp, which contains
>  program MakeSkel;
> instead of
>  program *UnitDiff*;
> Please fix this glitch.

Fixed and committed. Rev. 19850.

> When I finally made --update work for a couple of units, in one run, another 
> bug popped up: MakeSkel seems to misinterpret the following in TestUnit.pp, 
> most probably at:
>  ARecordVar : Record
>                 A,B : integer;
>               end;
> A variable ARecordVar is added to the docs, *and* two variables A and B, 
> which IMO better should become ARecordVar.A and ARecordVar.B. When the unit 
> is updated later, these variables A and B are added to the output again - 
> what made me find this bug. When somebody fixes this bug, will it be possible 
> to also suppress the creation of empty output files? This will simplify the 
> separation of changed units from unchanged ones, where  currently all created 
> files have to be inspected for real changes manually :-(

This is a known problem, which I haven't gotten around to fixing yet. 
I am currently working on the parser; Hopefully I'll be able to fix this too.

> Now I'll try to further extend MkSkel by using FPDoc projects, so that the 
> correct input specifications are used, including all compiler options. Then 
> it will be easy to check the RTL and other packages for updates, and to 
> create the skeletons for all contained units :-)

If you do so, and intend to provide a patch, please keep the patch clean. 
All your other patches were mostly unusable because of all the 'noise' 
in them, forcing me to re-implement almost from scratch whatever you did.


More information about the fpc-devel mailing list