Dear devs,

rules_haskell [1] recently earned the ability to skip recompiling modules when the ABI hashes of dependencies don't change in interface files.

We have noticed since then that sometimes ghc --make does avoid rebuilding even when ABI hashes change. However, so far I've been unable to reproduce this in the small. The wiki page on recompilation avoidance does remark that a changing ABI hash is a necessary but not sufficient condition for recompilation [2].

Does anyone have a small example showing how ghc avoids rebuilding even when the ABI hash of a dependency changes?

Thanks in advance!
Facundo

[1] https://github.com/tweag/rules_haskell/issues/1760#issuecomment-1179102232
[2] https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/compiler/recompilation-avoidance#interface-file-invariants