Hi,
the only problem with the "import Prelude" trick is that it does not help when you explicitly list what you import. For example, in one of my files I had:
import Control.Applicative ((<$>))
which will still result in a warning. Simply change it to
import Control.Applicative
import Prelude
However, sometimes there are conflicting names due to reexports. For example, forM is both in Data.Traversable and Control.Monad. In such a case, use "hiding" for one of them.
Also change
if you want to avoid CPP at all cost.
I too went through a few cycles 7.8.4 <-> 7.10.1 trying to make the code warning free on both (I don't use Travis but having minghc on Windows or using HVR's PPA on Ubuntu helps a lot).