When deciding whether the source for a module is unchanged, don't look
at the file referred to in the argument of '-o' unless it really is
the object file for this compilation (it might be the binary instead).
MERGE TO STABLE
do_recomp <- readIORef v_Recomp
todo <- readIORef v_GhcMode
expl_o_file <- readIORef v_Output_file
do_recomp <- readIORef v_Recomp
todo <- readIORef v_GhcMode
expl_o_file <- readIORef v_Output_file
- let o_file =
- case expl_o_file of
- Nothing -> unJust "source_unchanged" (ml_obj_file location)
- Just x -> x
+
+ let o_file -- if the -o option is given and IT IS THE OBJECT FILE FOR
+ -- THIS COMPILATION, then use that to determine if the
+ -- source is unchanged.
+ | Just x <- expl_o_file, todo == StopBefore Ln = x
+ | otherwise = unJust "source_unchanged" (ml_obj_file location)
+
source_unchanged <-
if not (do_recomp && ( todo == DoLink || todo == StopBefore Ln ))
then return False
source_unchanged <-
if not (do_recomp && ( todo == DoLink || todo == StopBefore Ln ))
then return False