A fix for duplicate definitions in Femtounit
I finally fixed a longstanding duplicate definitions issue with Femtounit, my Interlisp unit test framework.
Femtounit creates a new File Manager type for unit tests, TESTS
. DEFTEST
, which defines a test, adds an entry of type TESTS
and expands into an internal function that carries out the test when called. The problem was the File Manager noticed and tracked two objects for each DEFTEST
, the TESTS
entry and the function. But the function is an implementation detail that shouldn't be tracked by the File Manager or seen directly by the user.
To fix the issue, in the DEFDEFINER
that creates the new type I added a call to UNMARKASCHANGED
immediately after the definition of the internal function. UNMARKASCHANGED
undoes the association with the File Manager the creation of the internal function establishes. I had tried DELDEF
but it removes both the association and the internal function.
I also refactored the definition of the internal function to use DEFINEQ
instead of assigning a LAMBDA
to the function cell of the symbol naming the test, which is less clear and obscures the intent.
Discuss...
Email | Reply @amoroso@fosstodon.org