@@ -149,21 +149,25 @@ typecheckModule :: IdeDefer
149
149
typecheckModule (IdeDefer defer) hsc keep_lbls pm = do
150
150
let modSummary = pm_mod_summary pm
151
151
dflags = ms_hspp_opts modSummary
152
- modSummary' <- initPlugins hsc modSummary
153
- (warnings, etcm) <- withWarnings " typecheck" $ \ tweak ->
154
- let
155
- session = tweak (hscSetFlags dflags hsc)
156
- -- TODO: maybe settings ms_hspp_opts is unnecessary?
157
- mod_summary'' = modSummary' { ms_hspp_opts = hsc_dflags session}
158
- in
159
- catchSrcErrors (hsc_dflags hsc) " typecheck" $ do
160
- tcRnModule session keep_lbls $ demoteIfDefer pm{pm_mod_summary = mod_summary''}
161
- let errorPipeline = unDefer . hideDiag dflags . tagDiag
162
- diags = map errorPipeline warnings
163
- deferedError = any fst diags
164
- case etcm of
165
- Left errs -> return ((map snd diags) ++ errs, Nothing )
166
- Right tcm -> return (map snd diags, Just $ tcm{tmrDeferedError = deferedError})
152
+ mmodSummary' <- catchSrcErrors (hsc_dflags hsc) " typecheck (initialize plugins)"
153
+ (initPlugins hsc modSummary)
154
+ case mmodSummary' of
155
+ Left errs -> return (errs, Nothing )
156
+ Right modSummary' -> do
157
+ (warnings, etcm) <- withWarnings " typecheck" $ \ tweak ->
158
+ let
159
+ session = tweak (hscSetFlags dflags hsc)
160
+ -- TODO: maybe settings ms_hspp_opts is unnecessary?
161
+ mod_summary'' = modSummary' { ms_hspp_opts = hsc_dflags session}
162
+ in
163
+ catchSrcErrors (hsc_dflags hsc) " typecheck" $ do
164
+ tcRnModule session keep_lbls $ demoteIfDefer pm{pm_mod_summary = mod_summary''}
165
+ let errorPipeline = unDefer . hideDiag dflags . tagDiag
166
+ diags = map errorPipeline warnings
167
+ deferedError = any fst diags
168
+ case etcm of
169
+ Left errs -> return ((map snd diags) ++ errs, Nothing )
170
+ Right tcm -> return (map snd diags, Just $ tcm{tmrDeferedError = deferedError})
167
171
where
168
172
demoteIfDefer = if defer then demoteTypeErrorsToWarnings else id
169
173
0 commit comments