
the only reason you do these in individual steps is that you need to pass different flags, or are there other reasons?
Not only that – we also want to be able to distinguish compilation errors between "caused by students" and "we broke something". Under the assumption that compilation for library files always succeeds, this is not an issue for the first two stages.
Have you tried putting the pragma {-# LANGUAGE Safe #-} as the first line into the submission file? I’m not sure how safe that actually is, but at least
{-# LANGUAGE Safe #-} {-# LANGUAGE Trustworthy #-} module Foo where
import Unsafe.Coerce
is rejected by 7.6.3. This way, it could work with a single invocation of --make.
I'll let others comment on how safe that is since it does look a little bit fragile. It could work, though. Cheers Lars