The main reason for the deprecation is that it is superseded by
.cmt-based infrastructure (as exploited by e.g. merlin, ocp-index,
etc).
I was thinking about the good old .annot days (finally, type information in emacs!), as well as of the not-so-good-ones (generation of the .annot file that took longer than the compilation of the file). By large, .cmt files have been a improvement in my experience.
That being said, there is one use of .annot files that I have not been able to port to .cmt files: finding (unsafe) uses of Pervasives.compare or Pervasives.equal in a codebase. My workflow is as follow:
- generate the .annot files
- grep for Pervasives.( = ) or Pervasives.compare with sufficient context
- dismiss all calls that occur on a basic type (typically scalars)
- check all remaining calls for an use on an abstract or possible-cyclic type
Clearly this process is not exactly efficient, and would be much better handled by a compiler warning -- especially since the compiler would be able to notice type equalities such as t = int coming from the context. So this message must not be understood as a real suggestion to keep .annot file in the end :)