Hi,

On Thu, Nov 8, 2018 at 10:16 AM Nicolás Ojeda Bär <nicolas.ojeda.bar@lexifi.com> wrote:
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 :)