- This version still suffers from...
- the defect that
⎕PROFILEdoes not report on local dfns - the fact that Dyalof offers no means to get the local code of ops/fns from classes
- the defect that
- Bug fixes
- When several reports were aggregated but ran (at least partly) different functions, a very large
(and also useless/wrong) report was printed to the session (fixes #19) - The data collected by the first run was written to component 10 of the
*.profilefile rather
than component 11, so it was overwritten by the aggregated data as soon as a report was created. - Dfns at the top level of a class or namespace script were not reported at all.
- A function without any testable line, like a one-line dfn, was reported as 100% covered even when it
was never called. Its first line now counts, so it is covered once it has been called. - Names without source code, like dfns local to another function or the setter of a read-only property,
were reported as 100% covered. - An operator with a left argument was reported under the name of that argument.
- A property declared with
Simple,Numbered,KeyedorDefaultproduced invalid getter and setter
names, so its getter was never measured. - Ignoring a namespace did not work when the report was compiled in a workspace without that namespace.
- A verbose report crashed with a VALUE ERROR when the
*.crfile was missing. - An interrupted
Finalisecould leave the*.crfile misaligned, so that later runs compared functions
against the wrong code. - Names passed to
⎕NEWthat were not fully qualified were not resolved in the calling namespace. Finalisefailed whenfilenamepointed to a directory that did not exist yet.- In a verbose report, the listing of a one-line dfn could be cut short.
- "Found new function" was printed for functions in namespaces that no earlier run had watched.
- When several reports were aggregated but ran (at least partly) different functions, a very large
watchis now a read-only property, as it has always been documented to be: it is established by the
constructor and cannot be changed afterwards.DeleteFileswith a left argument of 1 now also deletes the*.mdsummary.CodeCoveragerequires the Unicode edition of Dyalog APL; the constructor checks for it.- README revised and extended.
- Packages updated.
To be consumed as a Tatin package, see https://tatin.dev