Hi Tomas,

> -> ((mmApply (use mmNext)))
> 
> A false positive? ('mmNext' can be called in the function under

Yep.

> 'apply'.)  Maybe a dynamically scoped code is impossible to check
> reliably?

Yes. There are too many degrees of freedom in the code, so that a
reliable check will never be possible. 'lint' just tries to apply some
assumptions to the code, partially based on coding (naming) conventions
in PicoLisp.

For cases which are known to cause false positives, there is 'noLint'.
For example, the 'gui' function in "lib/form.l" is similar to 'mmNext',
being defined dynamically and called in another context. So there is a
call (noLint 'gui) at the end of "lib/form.l".


> -> ((xml (use Pre Nl)) (xml_ (bnd Nn N Pre Nl)) (xmlEsc (use @A)))
> 
> when run with the new lib/xml.l loaded.  The xml and xml_ are fine,

Well, 'Pre' and 'Nl' are indeed unused in 'xml'.

There is a convention in PicoLisp that when a function name starts with
an underscore, it is considered a "local" function.

So when I redefine 'xml_' to '_xml_', (lintAll) gives:

   -> ((xmlEsc (use @A)))


> xmlEsc looks like it has unused @A.

Yes, '@A' can be safely removed. Then (lintAll) will not complain any
longer.

Shall I keep '_xml_', or would you prefer another name?

Cheers,
- Alex
-- 
UNSUBSCRIBE: mailto:picol...@software-lab.de?subject=unsubscribe

Reply via email to