[project @ 2001-10-17 15:38:43 by simonpj]
[ghc-hetmet.git] / ghc / compiler / typecheck / TcSimplify.lhs
1 %
2 % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
3 %
4 \section[TcSimplify]{TcSimplify}
5
6
7
8 \begin{code}
9 module TcSimplify (
10         tcSimplifyInfer, tcSimplifyInferCheck,
11         tcSimplifyCheck, tcSimplifyRestricted,
12         tcSimplifyToDicts, tcSimplifyIPs, tcSimplifyTop,
13
14         tcSimplifyThetas, tcSimplifyCheckThetas,
15         bindInstsOfLocalFuns
16     ) where
17
18 #include "HsVersions.h"
19
20 import HsSyn            ( MonoBinds(..), HsExpr(..), andMonoBinds, andMonoBindList )
21 import TcHsSyn          ( TcExpr, TcId,
22                           TcMonoBinds, TcDictBinds
23                         )
24
25 import TcMonad
26 import Inst             ( lookupInst, lookupSimpleInst, LookupInstResult(..),
27                           tyVarsOfInst, predsOfInsts, predsOfInst,
28                           isDict, isClassDict, instName,
29                           isStdClassTyVarDict, isMethodFor,
30                           instToId, tyVarsOfInsts,
31                           instBindingRequired, instCanBeGeneralised,
32                           newDictsFromOld, instMentionsIPs,
33                           getDictClassTys, isTyVarDict,
34                           instLoc, pprInst, zonkInst, tidyInsts, tidyMoreInsts,
35                           Inst, LIE, pprInsts, pprInstsInFull,
36                           mkLIE, lieToList
37                         )
38 import TcEnv            ( tcGetGlobalTyVars, tcGetInstEnv )
39 import InstEnv          ( lookupInstEnv, classInstEnv, InstLookupResult(..) )
40
41 import TcMType          ( zonkTcTyVarsAndFV, tcInstTyVars, unifyTauTy )
42 import TcType           ( ThetaType, PredType, mkClassPred, isOverloadedTy,
43                           mkTyVarTy, tcGetTyVar, isTyVarClassPred,
44                           tyVarsOfPred, getClassPredTys_maybe, isClassPred, isIPPred,
45                           inheritablePred, predHasFDs )
46 import Id               ( idType )
47 import NameSet          ( mkNameSet )
48 import Class            ( classBigSig )
49 import FunDeps          ( oclose, grow, improve, pprEquationDoc )
50 import PrelInfo         ( isNumericClass, isCreturnableClass, isCcallishClass )
51
52 import Subst            ( mkTopTyVarSubst, substTheta, substTy )
53 import TysWiredIn       ( unitTy )
54 import VarSet
55 import FiniteMap
56 import Outputable
57 import ListSetOps       ( equivClasses )
58 import Util             ( zipEqual )
59 import List             ( partition )
60 import CmdLineOpts
61 \end{code}
62
63
64 %************************************************************************
65 %*                                                                      *
66 \subsection{NOTES}
67 %*                                                                      *
68 %************************************************************************
69
70         --------------------------------------
71                 Notes on quantification
72         --------------------------------------
73
74 Suppose we are about to do a generalisation step.
75 We have in our hand
76
77         G       the environment
78         T       the type of the RHS
79         C       the constraints from that RHS
80
81 The game is to figure out
82
83         Q       the set of type variables over which to quantify
84         Ct      the constraints we will *not* quantify over
85         Cq      the constraints we will quantify over
86
87 So we're going to infer the type
88
89         forall Q. Cq => T
90
91 and float the constraints Ct further outwards.
92
93 Here are the things that *must* be true:
94
95  (A)    Q intersect fv(G) = EMPTY                       limits how big Q can be
96  (B)    Q superset fv(Cq union T) \ oclose(fv(G),C)     limits how small Q can be
97
98 (A) says we can't quantify over a variable that's free in the
99 environment.  (B) says we must quantify over all the truly free
100 variables in T, else we won't get a sufficiently general type.  We do
101 not *need* to quantify over any variable that is fixed by the free
102 vars of the environment G.
103
104         BETWEEN THESE TWO BOUNDS, ANY Q WILL DO!
105
106 Example:        class H x y | x->y where ...
107
108         fv(G) = {a}     C = {H a b, H c d}
109                         T = c -> b
110
111         (A)  Q intersect {a} is empty
112         (B)  Q superset {a,b,c,d} \ oclose({a}, C) = {a,b,c,d} \ {a,b} = {c,d}
113
114         So Q can be {c,d}, {b,c,d}
115
116 Other things being equal, however, we'd like to quantify over as few
117 variables as possible: smaller types, fewer type applications, more
118 constraints can get into Ct instead of Cq.
119
120
121 -----------------------------------------
122 We will make use of
123
124   fv(T)         the free type vars of T
125
126   oclose(vs,C)  The result of extending the set of tyvars vs
127                 using the functional dependencies from C
128
129   grow(vs,C)    The result of extend the set of tyvars vs
130                 using all conceivable links from C.
131
132                 E.g. vs = {a}, C = {H [a] b, K (b,Int) c, Eq e}
133                 Then grow(vs,C) = {a,b,c}
134
135                 Note that grow(vs,C) `superset` grow(vs,simplify(C))
136                 That is, simplfication can only shrink the result of grow.
137
138 Notice that
139    oclose is conservative one way:      v `elem` oclose(vs,C) => v is definitely fixed by vs
140    grow is conservative the other way:  if v might be fixed by vs => v `elem` grow(vs,C)
141
142
143 -----------------------------------------
144
145 Choosing Q
146 ~~~~~~~~~~
147 Here's a good way to choose Q:
148
149         Q = grow( fv(T), C ) \ oclose( fv(G), C )
150
151 That is, quantify over all variable that that MIGHT be fixed by the
152 call site (which influences T), but which aren't DEFINITELY fixed by
153 G.  This choice definitely quantifies over enough type variables,
154 albeit perhaps too many.
155
156 Why grow( fv(T), C ) rather than fv(T)?  Consider
157
158         class H x y | x->y where ...
159
160         T = c->c
161         C = (H c d)
162
163   If we used fv(T) = {c} we'd get the type
164
165         forall c. H c d => c -> b
166
167   And then if the fn was called at several different c's, each of
168   which fixed d differently, we'd get a unification error, because
169   d isn't quantified.  Solution: quantify d.  So we must quantify
170   everything that might be influenced by c.
171
172 Why not oclose( fv(T), C )?  Because we might not be able to see
173 all the functional dependencies yet:
174
175         class H x y | x->y where ...
176         instance H x y => Eq (T x y) where ...
177
178         T = c->c
179         C = (Eq (T c d))
180
181   Now oclose(fv(T),C) = {c}, because the functional dependency isn't
182   apparent yet, and that's wrong.  We must really quantify over d too.
183
184
185 There really isn't any point in quantifying over any more than
186 grow( fv(T), C ), because the call sites can't possibly influence
187 any other type variables.
188
189
190
191         --------------------------------------
192                 Notes on ambiguity
193         --------------------------------------
194
195 It's very hard to be certain when a type is ambiguous.  Consider
196
197         class K x
198         class H x y | x -> y
199         instance H x y => K (x,y)
200
201 Is this type ambiguous?
202         forall a b. (K (a,b), Eq b) => a -> a
203
204 Looks like it!  But if we simplify (K (a,b)) we get (H a b) and
205 now we see that a fixes b.  So we can't tell about ambiguity for sure
206 without doing a full simplification.  And even that isn't possible if
207 the context has some free vars that may get unified.  Urgle!
208
209 Here's another example: is this ambiguous?
210         forall a b. Eq (T b) => a -> a
211 Not if there's an insance decl (with no context)
212         instance Eq (T b) where ...
213
214 You may say of this example that we should use the instance decl right
215 away, but you can't always do that:
216
217         class J a b where ...
218         instance J Int b where ...
219
220         f :: forall a b. J a b => a -> a
221
222 (Notice: no functional dependency in J's class decl.)
223 Here f's type is perfectly fine, provided f is only called at Int.
224 It's premature to complain when meeting f's signature, or even
225 when inferring a type for f.
226
227
228
229 However, we don't *need* to report ambiguity right away.  It'll always
230 show up at the call site.... and eventually at main, which needs special
231 treatment.  Nevertheless, reporting ambiguity promptly is an excellent thing.
232
233 So here's the plan.  We WARN about probable ambiguity if
234
235         fv(Cq) is not a subset of  oclose(fv(T) union fv(G), C)
236
237 (all tested before quantification).
238 That is, all the type variables in Cq must be fixed by the the variables
239 in the environment, or by the variables in the type.
240
241 Notice that we union before calling oclose.  Here's an example:
242
243         class J a b c | a b -> c
244         fv(G) = {a}
245
246 Is this ambiguous?
247         forall b c. (J a b c) => b -> b
248
249 Only if we union {a} from G with {b} from T before using oclose,
250 do we see that c is fixed.
251
252 It's a bit vague exactly which C we should use for this oclose call.  If we
253 don't fix enough variables we might complain when we shouldn't (see
254 the above nasty example).  Nothing will be perfect.  That's why we can
255 only issue a warning.
256
257
258 Can we ever be *certain* about ambiguity?  Yes: if there's a constraint
259
260         c in C such that fv(c) intersect (fv(G) union fv(T)) = EMPTY
261
262 then c is a "bubble"; there's no way it can ever improve, and it's
263 certainly ambiguous.  UNLESS it is a constant (sigh).  And what about
264 the nasty example?
265
266         class K x
267         class H x y | x -> y
268         instance H x y => K (x,y)
269
270 Is this type ambiguous?
271         forall a b. (K (a,b), Eq b) => a -> a
272
273 Urk.  The (Eq b) looks "definitely ambiguous" but it isn't.  What we are after
274 is a "bubble" that's a set of constraints
275
276         Cq = Ca union Cq'  st  fv(Ca) intersect (fv(Cq') union fv(T) union fv(G)) = EMPTY
277
278 Hence another idea.  To decide Q start with fv(T) and grow it
279 by transitive closure in Cq (no functional dependencies involved).
280 Now partition Cq using Q, leaving the definitely-ambiguous and probably-ok.
281 The definitely-ambiguous can then float out, and get smashed at top level
282 (which squashes out the constants, like Eq (T a) above)
283
284
285         --------------------------------------
286                 Notes on principal types
287         --------------------------------------
288
289     class C a where
290       op :: a -> a
291
292     f x = let g y = op (y::Int) in True
293
294 Here the principal type of f is (forall a. a->a)
295 but we'll produce the non-principal type
296     f :: forall a. C Int => a -> a
297
298
299         --------------------------------------
300                 Notes on implicit parameters
301         --------------------------------------
302
303 Question 1: can we "inherit" implicit parameters
304 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
305 Consider this:
306
307         f x = (x::Int) + ?y
308
309 where f is *not* a top-level binding.
310 From the RHS of f we'll get the constraint (?y::Int).
311 There are two types we might infer for f:
312
313         f :: Int -> Int
314
315 (so we get ?y from the context of f's definition), or
316
317         f :: (?y::Int) => Int -> Int
318
319 At first you might think the first was better, becuase then
320 ?y behaves like a free variable of the definition, rather than
321 having to be passed at each call site.  But of course, the WHOLE
322 IDEA is that ?y should be passed at each call site (that's what
323 dynamic binding means) so we'd better infer the second.
324
325 BOTTOM LINE: you *must* quantify over implicit parameters. See
326 isFreeAndInheritable.
327
328 BUT WATCH OUT: for *expressions*, this isn't right.  Consider:
329
330         (?x + 1) :: Int
331
332 This is perfectly reasonable.  We do not want to insist on
333
334         (?x + 1) :: (?x::Int => Int)
335
336 That would be silly.  Here, the definition site *is* the occurrence site,
337 so the above strictures don't apply.  Hence the difference between
338 tcSimplifyCheck (which *does* allow implicit paramters to be inherited)
339 and tcSimplifyCheckBind (which does not).
340
341
342 Question 2: type signatures
343 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
344 OK, so is it legal to give an explicit, user type signature to f, thus:
345
346         f :: Int -> Int
347         f x = (x::Int) + ?y
348
349 At first sight this seems reasonable, but it has the nasty property
350 that adding a type signature changes the dynamic semantics.
351 Consider this:
352
353         (let f x = (x::Int) + ?y
354          in (f 3, f 3 with ?y=5))  with ?y = 6
355
356                 returns (3+6, 3+5)
357 vs
358         (let f :: Int -> Int
359              f x = x + ?y
360          in (f 3, f 3 with ?y=5))  with ?y = 6
361
362                 returns (3+6, 3+6)
363
364 Indeed, simply inlining f (at the Haskell source level) would change the
365 dynamic semantics.
366
367 Conclusion: the above type signature is illegal.  You'll get a message
368 of the form "could not deduce (?y::Int) from ()".
369
370
371 Question 3: monomorphism
372 ~~~~~~~~~~~~~~~~~~~~~~~~
373 There's a nasty corner case when the monomorphism restriction bites:
374
375         z = (x::Int) + ?y
376
377 The argument above suggests that we *must* generalise
378 over the ?y parameter, to get
379         z :: (?y::Int) => Int,
380 but the monomorphism restriction says that we *must not*, giving
381         z :: Int.
382 Why does the momomorphism restriction say this?  Because if you have
383
384         let z = x + ?y in z+z
385
386 you might not expect the addition to be done twice --- but it will if
387 we follow the argument of Question 2 and generalise over ?y.
388
389
390
391 Possible choices
392 ~~~~~~~~~~~~~~~~
393 (A) Always generalise over implicit parameters
394     Bindings that fall under the monomorphism restriction can't
395         be generalised
396
397     Consequences:
398         * Inlining remains valid
399         * No unexpected loss of sharing
400         * But simple bindings like
401                 z = ?y + 1
402           will be rejected, unless you add an explicit type signature
403           (to avoid the monomorphism restriction)
404                 z :: (?y::Int) => Int
405                 z = ?y + 1
406           This seems unacceptable
407
408 (B) Monomorphism restriction "wins"
409     Bindings that fall under the monomorphism restriction can't
410         be generalised
411     Always generalise over implicit parameters *except* for bindings
412         that fall under the monomorphism restriction
413
414     Consequences
415         * Inlining isn't valid in general
416         * No unexpected loss of sharing
417         * Simple bindings like
418                 z = ?y + 1
419           accepted (get value of ?y from binding site)
420
421 (C) Always generalise over implicit parameters
422     Bindings that fall under the monomorphism restriction can't
423         be generalised, EXCEPT for implicit parameters
424     Consequences
425         * Inlining remains valid
426         * Unexpected loss of sharing (from the extra generalisation)
427         * Simple bindings like
428                 z = ?y + 1
429           accepted (get value of ?y from occurrence sites)
430
431
432 Discussion
433 ~~~~~~~~~~
434 None of these choices seems very satisfactory.  But at least we should
435 decide which we want to do.
436
437 It's really not clear what is the Right Thing To Do.  If you see
438
439         z = (x::Int) + ?y
440
441 would you expect the value of ?y to be got from the *occurrence sites*
442 of 'z', or from the valuue of ?y at the *definition* of 'z'?  In the
443 case of function definitions, the answer is clearly the former, but
444 less so in the case of non-fucntion definitions.   On the other hand,
445 if we say that we get the value of ?y from the definition site of 'z',
446 then inlining 'z' might change the semantics of the program.
447
448 Choice (C) really says "the monomorphism restriction doesn't apply
449 to implicit parameters".  Which is fine, but remember that every
450 innocent binding 'x = ...' that mentions an implicit parameter in
451 the RHS becomes a *function* of that parameter, called at each
452 use of 'x'.  Now, the chances are that there are no intervening 'with'
453 clauses that bind ?y, so a decent compiler should common up all
454 those function calls.  So I think I strongly favour (C).  Indeed,
455 one could make a similar argument for abolishing the monomorphism
456 restriction altogether.
457
458 BOTTOM LINE: we choose (B) at present.  See tcSimplifyRestricted
459
460
461
462 %************************************************************************
463 %*                                                                      *
464 \subsection{tcSimplifyInfer}
465 %*                                                                      *
466 %************************************************************************
467
468 tcSimplify is called when we *inferring* a type.  Here's the overall game plan:
469
470     1. Compute Q = grow( fvs(T), C )
471
472     2. Partition C based on Q into Ct and Cq.  Notice that ambiguous
473        predicates will end up in Ct; we deal with them at the top level
474
475     3. Try improvement, using functional dependencies
476
477     4. If Step 3 did any unification, repeat from step 1
478        (Unification can change the result of 'grow'.)
479
480 Note: we don't reduce dictionaries in step 2.  For example, if we have
481 Eq (a,b), we don't simplify to (Eq a, Eq b).  So Q won't be different
482 after step 2.  However note that we may therefore quantify over more
483 type variables than we absolutely have to.
484
485 For the guts, we need a loop, that alternates context reduction and
486 improvement with unification.  E.g. Suppose we have
487
488         class C x y | x->y where ...
489
490 and tcSimplify is called with:
491         (C Int a, C Int b)
492 Then improvement unifies a with b, giving
493         (C Int a, C Int a)
494
495 If we need to unify anything, we rattle round the whole thing all over
496 again.
497
498
499 \begin{code}
500 tcSimplifyInfer
501         :: SDoc
502         -> TcTyVarSet           -- fv(T); type vars
503         -> LIE                  -- Wanted
504         -> TcM ([TcTyVar],      -- Tyvars to quantify (zonked)
505                 LIE,            -- Free
506                 TcDictBinds,    -- Bindings
507                 [TcId])         -- Dict Ids that must be bound here (zonked)
508 \end{code}
509
510
511 \begin{code}
512 tcSimplifyInfer doc tau_tvs wanted_lie
513   = inferLoop doc (varSetElems tau_tvs)
514               (lieToList wanted_lie)    `thenTc` \ (qtvs, frees, binds, irreds) ->
515
516         -- Check for non-generalisable insts
517     mapTc_ addCantGenErr (filter (not . instCanBeGeneralised) irreds)   `thenTc_`
518
519     returnTc (qtvs, mkLIE frees, binds, map instToId irreds)
520
521 inferLoop doc tau_tvs wanteds
522   =     -- Step 1
523     zonkTcTyVarsAndFV tau_tvs           `thenNF_Tc` \ tau_tvs' ->
524     mapNF_Tc zonkInst wanteds           `thenNF_Tc` \ wanteds' ->
525     tcGetGlobalTyVars                   `thenNF_Tc` \ gbl_tvs ->
526     let
527         preds = predsOfInsts wanteds'
528         qtvs  = grow preds tau_tvs' `minusVarSet` oclose preds gbl_tvs
529
530         try_me inst
531           | isFreeAndInheritable qtvs inst = Free
532           | isClassDict inst               = DontReduceUnlessConstant   -- Dicts
533           | otherwise                      = ReduceMe                   -- Lits and Methods
534     in
535                 -- Step 2
536     reduceContext doc try_me [] wanteds'    `thenTc` \ (no_improvement, frees, binds, irreds) ->
537
538                 -- Step 3
539     if no_improvement then
540         returnTc (varSetElems qtvs, frees, binds, irreds)
541     else
542         -- If improvement did some unification, we go round again.  There
543         -- are two subtleties:
544         --   a) We start again with irreds, not wanteds
545         --      Using an instance decl might have introduced a fresh type variable
546         --      which might have been unified, so we'd get an infinite loop
547         --      if we started again with wanteds!  See example [LOOP]
548         --
549         --   b) It's also essential to re-process frees, because unification
550         --      might mean that a type variable that looked free isn't now.
551         --
552         -- Hence the (irreds ++ frees)
553
554         -- However, NOTICE that when we are done, we might have some bindings, but
555         -- the final qtvs might be empty.  See [NO TYVARS] below.
556                                 
557         inferLoop doc tau_tvs (irreds ++ frees) `thenTc` \ (qtvs1, frees1, binds1, irreds1) ->
558         returnTc (qtvs1, frees1, binds `AndMonoBinds` binds1, irreds1)
559 \end{code}
560
561 Example [LOOP]
562
563         class If b t e r | b t e -> r
564         instance If T t e t
565         instance If F t e e
566         class Lte a b c | a b -> c where lte :: a -> b -> c
567         instance Lte Z b T
568         instance (Lte a b l,If l b a c) => Max a b c
569
570 Wanted: Max Z (S x) y
571
572 Then we'll reduce using the Max instance to:
573         (Lte Z (S x) l, If l (S x) Z y)
574 and improve by binding l->T, after which we can do some reduction
575 on both the Lte and If constraints.  What we *can't* do is start again
576 with (Max Z (S x) y)!
577
578 [NO TYVARS]
579
580         class Y a b | a -> b where
581             y :: a -> X b
582         
583         instance Y [[a]] a where
584             y ((x:_):_) = X x
585         
586         k :: X a -> X a -> X a
587
588         g :: Num a => [X a] -> [X a]
589         g xs = h xs
590             where
591             h ys = ys ++ map (k (y [[0]])) xs
592
593 The excitement comes when simplifying the bindings for h.  Initially
594 try to simplify {y @ [[t1]] t2, 0 @ t1}, with initial qtvs = {t2}.
595 From this we get t1:=:t2, but also various bindings.  We can't forget
596 the bindings (because of [LOOP]), but in fact t1 is what g is
597 polymorphic in.
598
599 \begin{code}
600 isFreeAndInheritable qtvs inst
601   =  isFree qtvs inst                                   -- Constrains no quantified vars
602   && all inheritablePred (predsOfInst inst)             -- And no implicit parameter involved
603                                                         -- (see "Notes on implicit parameters")
604
605 isFree qtvs inst
606   = not (tyVarsOfInst inst `intersectsVarSet` qtvs)
607 \end{code}
608
609
610 %************************************************************************
611 %*                                                                      *
612 \subsection{tcSimplifyCheck}
613 %*                                                                      *
614 %************************************************************************
615
616 @tcSimplifyCheck@ is used when we know exactly the set of variables
617 we are going to quantify over.  For example, a class or instance declaration.
618
619 \begin{code}
620 tcSimplifyCheck
621          :: SDoc
622          -> [TcTyVar]           -- Quantify over these
623          -> [Inst]              -- Given
624          -> LIE                 -- Wanted
625          -> TcM (LIE,           -- Free
626                  TcDictBinds)   -- Bindings
627
628 -- tcSimplifyCheck is used when checking exprssion type signatures,
629 -- class decls, instance decls etc.
630 -- Note that we psss isFree (not isFreeAndInheritable) to tcSimplCheck
631 -- It's important that we can float out non-inheritable predicates
632 -- Example:             (?x :: Int) is ok!
633 tcSimplifyCheck doc qtvs givens wanted_lie
634   = tcSimplCheck doc isFree get_qtvs
635                  givens wanted_lie      `thenTc` \ (qtvs', frees, binds) ->
636     returnTc (frees, binds)
637   where
638     get_qtvs = zonkTcTyVarsAndFV qtvs
639
640
641 -- tcSimplifyInferCheck is used when we know the constraints we are to simplify
642 -- against, but we don't know the type variables over which we are going to quantify.
643 -- This happens when we have a type signature for a mutually recursive group
644 tcSimplifyInferCheck
645          :: SDoc
646          -> TcTyVarSet          -- fv(T)
647          -> [Inst]              -- Given
648          -> LIE                 -- Wanted
649          -> TcM ([TcTyVar],     -- Variables over which to quantify
650                  LIE,           -- Free
651                  TcDictBinds)   -- Bindings
652
653 tcSimplifyInferCheck doc tau_tvs givens wanted_lie
654   = tcSimplCheck doc isFreeAndInheritable get_qtvs givens wanted_lie
655   where
656         -- Figure out which type variables to quantify over
657         -- You might think it should just be the signature tyvars,
658         -- but in bizarre cases you can get extra ones
659         --      f :: forall a. Num a => a -> a
660         --      f x = fst (g (x, head [])) + 1
661         --      g a b = (b,a)
662         -- Here we infer g :: forall a b. a -> b -> (b,a)
663         -- We don't want g to be monomorphic in b just because
664         -- f isn't quantified over b.
665     all_tvs = varSetElems (tau_tvs `unionVarSet` tyVarsOfInsts givens)
666
667     get_qtvs = zonkTcTyVarsAndFV all_tvs        `thenNF_Tc` \ all_tvs' ->
668                tcGetGlobalTyVars                `thenNF_Tc` \ gbl_tvs ->
669                let
670                   qtvs = all_tvs' `minusVarSet` gbl_tvs
671                         -- We could close gbl_tvs, but its not necessary for
672                         -- soundness, and it'll only affect which tyvars, not which
673                         -- dictionaries, we quantify over
674                in
675                returnNF_Tc qtvs
676 \end{code}
677
678 Here is the workhorse function for all three wrappers.
679
680 \begin{code}
681 tcSimplCheck doc is_free get_qtvs givens wanted_lie
682   = check_loop givens (lieToList wanted_lie)    `thenTc` \ (qtvs, frees, binds, irreds) ->
683
684         -- Complain about any irreducible ones
685     complainCheck doc givens irreds             `thenNF_Tc_`
686
687         -- Done
688     returnTc (qtvs, mkLIE frees, binds)
689
690   where
691     check_loop givens wanteds
692       =         -- Step 1
693         mapNF_Tc zonkInst givens        `thenNF_Tc` \ givens' ->
694         mapNF_Tc zonkInst wanteds       `thenNF_Tc` \ wanteds' ->
695         get_qtvs                        `thenNF_Tc` \ qtvs' ->
696
697                     -- Step 2
698         let
699             -- When checking against a given signature we always reduce
700             -- until we find a match against something given, or can't reduce
701             try_me inst | is_free qtvs' inst = Free
702                         | otherwise          = ReduceMe
703         in
704         reduceContext doc try_me givens' wanteds'       `thenTc` \ (no_improvement, frees, binds, irreds) ->
705
706                     -- Step 3
707         if no_improvement then
708             returnTc (varSetElems qtvs', frees, binds, irreds)
709         else
710             check_loop givens' (irreds ++ frees)        `thenTc` \ (qtvs', frees1, binds1, irreds1) ->
711             returnTc (qtvs', frees1, binds `AndMonoBinds` binds1, irreds1)
712 \end{code}
713
714
715 %************************************************************************
716 %*                                                                      *
717 \subsection{tcSimplifyRestricted}
718 %*                                                                      *
719 %************************************************************************
720
721 \begin{code}
722 tcSimplifyRestricted    -- Used for restricted binding groups
723                         -- i.e. ones subject to the monomorphism restriction
724         :: SDoc
725         -> TcTyVarSet           -- Free in the type of the RHSs
726         -> LIE                  -- Free in the RHSs
727         -> TcM ([TcTyVar],      -- Tyvars to quantify (zonked)
728                 LIE,            -- Free
729                 TcDictBinds)    -- Bindings
730
731 tcSimplifyRestricted doc tau_tvs wanted_lie
732   =     -- First squash out all methods, to find the constrained tyvars
733         -- We can't just take the free vars of wanted_lie because that'll
734         -- have methods that may incidentally mention entirely unconstrained variables
735         --      e.g. a call to  f :: Eq a => a -> b -> b
736         -- Here, b is unconstrained.  A good example would be
737         --      foo = f (3::Int)
738         -- We want to infer the polymorphic type
739         --      foo :: forall b. b -> b
740     let
741         wanteds = lieToList wanted_lie
742         try_me inst = ReduceMe          -- Reduce as far as we can.  Don't stop at
743                                         -- dicts; the idea is to get rid of as many type
744                                         -- variables as possible, and we don't want to stop
745                                         -- at (say) Monad (ST s), because that reduces
746                                         -- immediately, with no constraint on s.
747     in
748     simpleReduceLoop doc try_me wanteds         `thenTc` \ (_, _, constrained_dicts) ->
749
750         -- Next, figure out the tyvars we will quantify over
751     zonkTcTyVarsAndFV (varSetElems tau_tvs)     `thenNF_Tc` \ tau_tvs' ->
752     tcGetGlobalTyVars                           `thenNF_Tc` \ gbl_tvs ->
753     let
754         constrained_tvs = tyVarsOfInsts constrained_dicts
755         qtvs = (tau_tvs' `minusVarSet` oclose (predsOfInsts constrained_dicts) gbl_tvs)
756                          `minusVarSet` constrained_tvs
757     in
758
759         -- The first step may have squashed more methods than
760         -- necessary, so try again, this time knowing the exact
761         -- set of type variables to quantify over.
762         --
763         -- We quantify only over constraints that are captured by qtvs;
764         -- these will just be a subset of non-dicts.  This in contrast
765         -- to normal inference (using isFreeAndInheritable) in which we quantify over
766         -- all *non-inheritable* constraints too.  This implements choice
767         -- (B) under "implicit parameter and monomorphism" above.
768     mapNF_Tc zonkInst (lieToList wanted_lie)    `thenNF_Tc` \ wanteds' ->
769     let
770         try_me inst | isFree qtvs inst = Free
771                     | otherwise        = ReduceMe
772     in
773     reduceContext doc try_me [] wanteds'        `thenTc` \ (no_improvement, frees, binds, irreds) ->
774     ASSERT( no_improvement )
775     ASSERT( null irreds )
776         -- No need to loop because simpleReduceLoop will have
777         -- already done any improvement necessary
778
779     returnTc (varSetElems qtvs, mkLIE frees, binds)
780 \end{code}
781
782
783 %************************************************************************
784 %*                                                                      *
785 \subsection{tcSimplifyToDicts}
786 %*                                                                      *
787 %************************************************************************
788
789 On the LHS of transformation rules we only simplify methods and constants,
790 getting dictionaries.  We want to keep all of them unsimplified, to serve
791 as the available stuff for the RHS of the rule.
792
793 The same thing is used for specialise pragmas. Consider
794
795         f :: Num a => a -> a
796         {-# SPECIALISE f :: Int -> Int #-}
797         f = ...
798
799 The type checker generates a binding like:
800
801         f_spec = (f :: Int -> Int)
802
803 and we want to end up with
804
805         f_spec = _inline_me_ (f Int dNumInt)
806
807 But that means that we must simplify the Method for f to (f Int dNumInt)!
808 So tcSimplifyToDicts squeezes out all Methods.
809
810 IMPORTANT NOTE:  we *don't* want to do superclass commoning up.  Consider
811
812         fromIntegral :: (Integral a, Num b) => a -> b
813         {-# RULES "foo"  fromIntegral = id :: Int -> Int #-}
814
815 Here, a=b=Int, and Num Int is a superclass of Integral Int. But we *dont*
816 want to get
817
818         forall dIntegralInt.
819         fromIntegral Int Int dIntegralInt (scsel dIntegralInt) = id Int
820
821 because the scsel will mess up matching.  Instead we want
822
823         forall dIntegralInt, dNumInt.
824         fromIntegral Int Int dIntegralInt dNumInt = id Int
825
826 Hence "DontReduce NoSCs"
827
828 \begin{code}
829 tcSimplifyToDicts :: LIE -> TcM ([Inst], TcDictBinds)
830 tcSimplifyToDicts wanted_lie
831   = simpleReduceLoop doc try_me wanteds         `thenTc` \ (frees, binds, irreds) ->
832         -- Since try_me doesn't look at types, we don't need to
833         -- do any zonking, so it's safe to call reduceContext directly
834     ASSERT( null frees )
835     returnTc (irreds, binds)
836
837   where
838     doc = text "tcSimplifyToDicts"
839     wanteds = lieToList wanted_lie
840
841         -- Reduce methods and lits only; stop as soon as we get a dictionary
842     try_me inst | isDict inst = DontReduce NoSCs
843                 | otherwise   = ReduceMe
844 \end{code}
845
846
847 %************************************************************************
848 %*                                                                      *
849 \subsection{Filtering at a dynamic binding}
850 %*                                                                      *
851 %************************************************************************
852
853 When we have
854         let ?x = R in B
855
856 we must discharge all the ?x constraints from B.  We also do an improvement
857 step; if we have ?x::t1 and ?x::t2 we must unify t1, t2.
858
859 Actually, the constraints from B might improve the types in ?x. For example
860
861         f :: (?x::Int) => Char -> Char
862         let ?x = 3 in f 'c'
863
864 then the constraint (?x::Int) arising from the call to f will
865 force the binding for ?x to be of type Int.
866
867 \begin{code}
868 tcSimplifyIPs :: [Inst]         -- The implicit parameters bound here
869               -> LIE
870               -> TcM (LIE, TcDictBinds)
871 tcSimplifyIPs given_ips wanted_lie
872   = simpl_loop given_ips wanteds        `thenTc` \ (frees, binds) ->
873     returnTc (mkLIE frees, binds)
874   where
875     doc      = text "tcSimplifyIPs" <+> ppr ip_names
876     wanteds  = lieToList wanted_lie
877     ip_names = map instName given_ips
878     ip_set   = mkNameSet ip_names
879
880         -- Simplify any methods that mention the implicit parameter
881     try_me inst | inst `instMentionsIPs` ip_set = ReduceMe
882                 | otherwise                     = Free
883
884     simpl_loop givens wanteds
885       = mapNF_Tc zonkInst givens                `thenNF_Tc` \ givens' ->
886         mapNF_Tc zonkInst wanteds               `thenNF_Tc` \ wanteds' ->
887
888         reduceContext doc try_me givens' wanteds'    `thenTc` \ (no_improvement, frees, binds, irreds) ->
889
890         if no_improvement then
891             ASSERT( null irreds )
892             returnTc (frees, binds)
893         else
894             simpl_loop givens' (irreds ++ frees)        `thenTc` \ (frees1, binds1) ->
895             returnTc (frees1, binds `AndMonoBinds` binds1)
896 \end{code}
897
898
899 %************************************************************************
900 %*                                                                      *
901 \subsection[binds-for-local-funs]{@bindInstsOfLocalFuns@}
902 %*                                                                      *
903 %************************************************************************
904
905 When doing a binding group, we may have @Insts@ of local functions.
906 For example, we might have...
907 \begin{verbatim}
908 let f x = x + 1     -- orig local function (overloaded)
909     f.1 = f Int     -- two instances of f
910     f.2 = f Float
911  in
912     (f.1 5, f.2 6.7)
913 \end{verbatim}
914 The point is: we must drop the bindings for @f.1@ and @f.2@ here,
915 where @f@ is in scope; those @Insts@ must certainly not be passed
916 upwards towards the top-level.  If the @Insts@ were binding-ified up
917 there, they would have unresolvable references to @f@.
918
919 We pass in an @init_lie@ of @Insts@ and a list of locally-bound @Ids@.
920 For each method @Inst@ in the @init_lie@ that mentions one of the
921 @Ids@, we create a binding.  We return the remaining @Insts@ (in an
922 @LIE@), as well as the @HsBinds@ generated.
923
924 \begin{code}
925 bindInstsOfLocalFuns :: LIE -> [TcId] -> TcM (LIE, TcMonoBinds)
926
927 bindInstsOfLocalFuns init_lie local_ids
928   | null overloaded_ids
929         -- Common case
930   = returnTc (init_lie, EmptyMonoBinds)
931
932   | otherwise
933   = simpleReduceLoop doc try_me wanteds         `thenTc` \ (frees, binds, irreds) ->
934     ASSERT( null irreds )
935     returnTc (mkLIE frees, binds)
936   where
937     doc              = text "bindInsts" <+> ppr local_ids
938     wanteds          = lieToList init_lie
939     overloaded_ids   = filter is_overloaded local_ids
940     is_overloaded id = isOverloadedTy (idType id)
941
942     overloaded_set = mkVarSet overloaded_ids    -- There can occasionally be a lot of them
943                                                 -- so it's worth building a set, so that
944                                                 -- lookup (in isMethodFor) is faster
945
946     try_me inst | isMethodFor overloaded_set inst = ReduceMe
947                 | otherwise                       = Free
948 \end{code}
949
950
951 %************************************************************************
952 %*                                                                      *
953 \subsection{Data types for the reduction mechanism}
954 %*                                                                      *
955 %************************************************************************
956
957 The main control over context reduction is here
958
959 \begin{code}
960 data WhatToDo
961  = ReduceMe             -- Try to reduce this
962                         -- If there's no instance, behave exactly like
963                         -- DontReduce: add the inst to
964                         -- the irreductible ones, but don't
965                         -- produce an error message of any kind.
966                         -- It might be quite legitimate such as (Eq a)!
967
968  | DontReduce WantSCs           -- Return as irreducible
969
970  | DontReduceUnlessConstant     -- Return as irreducible unless it can
971                                 -- be reduced to a constant in one step
972
973  | Free                   -- Return as free
974
975 data WantSCs = NoSCs | AddSCs   -- Tells whether we should add the superclasses
976                                 -- of a predicate when adding it to the avails
977 \end{code}
978
979
980
981 \begin{code}
982 type RedState = (Avails,        -- What's available
983                  [Inst])        -- Insts for which try_me returned Free
984
985 type Avails = FiniteMap Inst Avail
986
987 data Avail
988   = Irred               -- Used for irreducible dictionaries,
989                         -- which are going to be lambda bound
990
991   | BoundTo TcId        -- Used for dictionaries for which we have a binding
992                         -- e.g. those "given" in a signature
993
994   | NoRhs               -- Used for Insts like (CCallable f)
995                         -- where no witness is required.
996
997   | Rhs                 -- Used when there is a RHS
998         TcExpr          -- The RHS
999         [Inst]          -- Insts free in the RHS; we need these too
1000
1001 pprAvails avails = vcat [ppr inst <+> equals <+> pprAvail avail
1002                         | (inst,avail) <- fmToList avails ]
1003
1004 instance Outputable Avail where
1005     ppr = pprAvail
1006
1007 pprAvail NoRhs        = text "<no rhs>"
1008 pprAvail Irred        = text "Irred"
1009 pprAvail (BoundTo x)  = text "Bound to" <+> ppr x
1010 pprAvail (Rhs rhs bs) = ppr rhs <+> braces (ppr bs)
1011 \end{code}
1012
1013 Extracting the bindings from a bunch of Avails.
1014 The bindings do *not* come back sorted in dependency order.
1015 We assume that they'll be wrapped in a big Rec, so that the
1016 dependency analyser can sort them out later
1017
1018 The loop startes
1019 \begin{code}
1020 bindsAndIrreds :: Avails
1021                -> [Inst]                -- Wanted
1022                -> (TcDictBinds,         -- Bindings
1023                    [Inst])              -- Irreducible ones
1024
1025 bindsAndIrreds avails wanteds
1026   = go avails EmptyMonoBinds [] wanteds
1027   where
1028     go avails binds irreds [] = (binds, irreds)
1029
1030     go avails binds irreds (w:ws)
1031       = case lookupFM avails w of
1032           Nothing    -> -- Free guys come out here
1033                         -- (If we didn't do addFree we could use this as the
1034                         --  criterion for free-ness, and pick up the free ones here too)
1035                         go avails binds irreds ws
1036
1037           Just NoRhs -> go avails binds irreds ws
1038
1039           Just Irred -> go (addToFM avails w (BoundTo (instToId w))) binds (w:irreds) ws
1040
1041           Just (BoundTo id) -> go avails new_binds irreds ws
1042                             where
1043                                 -- For implicit parameters, all occurrences share the same
1044                                 -- Id, so there is no need for synonym bindings
1045                                new_binds | new_id == id = binds
1046                                          | otherwise    = addBind binds new_id (HsVar id)
1047                                new_id   = instToId w
1048
1049           Just (Rhs rhs ws') -> go avails' (addBind binds id rhs) irreds (ws' ++ ws)
1050                              where
1051                                 id       = instToId w
1052                                 avails'  = addToFM avails w (BoundTo id)
1053
1054 addBind binds id rhs = binds `AndMonoBinds` VarMonoBind id rhs
1055 \end{code}
1056
1057
1058 %************************************************************************
1059 %*                                                                      *
1060 \subsection[reduce]{@reduce@}
1061 %*                                                                      *
1062 %************************************************************************
1063
1064 When the "what to do" predicate doesn't depend on the quantified type variables,
1065 matters are easier.  We don't need to do any zonking, unless the improvement step
1066 does something, in which case we zonk before iterating.
1067
1068 The "given" set is always empty.
1069
1070 \begin{code}
1071 simpleReduceLoop :: SDoc
1072                  -> (Inst -> WhatToDo)          -- What to do, *not* based on the quantified type variables
1073                  -> [Inst]                      -- Wanted
1074                  -> TcM ([Inst],                -- Free
1075                          TcDictBinds,
1076                          [Inst])                -- Irreducible
1077
1078 simpleReduceLoop doc try_me wanteds
1079   = mapNF_Tc zonkInst wanteds                   `thenNF_Tc` \ wanteds' ->
1080     reduceContext doc try_me [] wanteds'        `thenTc` \ (no_improvement, frees, binds, irreds) ->
1081     if no_improvement then
1082         returnTc (frees, binds, irreds)
1083     else
1084         simpleReduceLoop doc try_me (irreds ++ frees)   `thenTc` \ (frees1, binds1, irreds1) ->
1085         returnTc (frees1, binds `AndMonoBinds` binds1, irreds1)
1086 \end{code}
1087
1088
1089
1090 \begin{code}
1091 reduceContext :: SDoc
1092               -> (Inst -> WhatToDo)
1093               -> [Inst]                 -- Given
1094               -> [Inst]                 -- Wanted
1095               -> NF_TcM (Bool,          -- True <=> improve step did no unification
1096                          [Inst],        -- Free
1097                          TcDictBinds,   -- Dictionary bindings
1098                          [Inst])        -- Irreducible
1099
1100 reduceContext doc try_me givens wanteds
1101   =
1102     traceTc (text "reduceContext" <+> (vcat [
1103              text "----------------------",
1104              doc,
1105              text "given" <+> ppr givens,
1106              text "wanted" <+> ppr wanteds,
1107              text "----------------------"
1108              ]))                                        `thenNF_Tc_`
1109
1110         -- Build the Avail mapping from "givens"
1111     foldlNF_Tc addGiven (emptyFM, []) givens            `thenNF_Tc` \ init_state ->
1112
1113         -- Do the real work
1114     reduceList (0,[]) try_me wanteds init_state         `thenNF_Tc` \ state@(avails, frees) ->
1115
1116         -- Do improvement, using everything in avails
1117         -- In particular, avails includes all superclasses of everything
1118     tcImprove avails                                    `thenTc` \ no_improvement ->
1119
1120     traceTc (text "reduceContext end" <+> (vcat [
1121              text "----------------------",
1122              doc,
1123              text "given" <+> ppr givens,
1124              text "wanted" <+> ppr wanteds,
1125              text "----",
1126              text "avails" <+> pprAvails avails,
1127              text "frees" <+> ppr frees,
1128              text "no_improvement =" <+> ppr no_improvement,
1129              text "----------------------"
1130              ]))                                        `thenNF_Tc_`
1131      let
1132         (binds, irreds) = bindsAndIrreds avails wanteds
1133      in
1134      returnTc (no_improvement, frees, binds, irreds)
1135
1136 tcImprove avails
1137  =  tcGetInstEnv                                `thenTc` \ inst_env ->
1138     let
1139         preds = [ (pred, pp_loc)
1140                 | inst <- keysFM avails,
1141                   let pp_loc = pprInstLoc (instLoc inst),
1142                   pred <- predsOfInst inst,
1143                   predHasFDs pred
1144                 ]
1145                 -- Avails has all the superclasses etc (good)
1146                 -- It also has all the intermediates of the deduction (good)
1147                 -- It does not have duplicates (good)
1148                 -- NB that (?x::t1) and (?x::t2) will be held separately in avails
1149                 --    so that improve will see them separate
1150         eqns  = improve (classInstEnv inst_env) preds
1151      in
1152      if null eqns then
1153         returnTc True
1154      else
1155         traceTc (ptext SLIT("Improve:") <+> vcat (map pprEquationDoc eqns))     `thenNF_Tc_`
1156         mapTc_ unify eqns       `thenTc_`
1157         returnTc False
1158   where
1159     unify ((qtvs, t1, t2), doc)
1160          = tcAddErrCtxt doc                     $
1161            tcInstTyVars (varSetElems qtvs)      `thenNF_Tc` \ (_, _, tenv) ->
1162            unifyTauTy (substTy tenv t1) (substTy tenv t2)
1163 \end{code}
1164
1165 The main context-reduction function is @reduce@.  Here's its game plan.
1166
1167 \begin{code}
1168 reduceList :: (Int,[Inst])              -- Stack (for err msgs)
1169                                         -- along with its depth
1170            -> (Inst -> WhatToDo)
1171            -> [Inst]
1172            -> RedState
1173            -> TcM RedState
1174 \end{code}
1175
1176 @reduce@ is passed
1177      try_me:    given an inst, this function returns
1178                   Reduce       reduce this
1179                   DontReduce   return this in "irreds"
1180                   Free         return this in "frees"
1181
1182      wanteds:   The list of insts to reduce
1183      state:     An accumulating parameter of type RedState
1184                 that contains the state of the algorithm
1185
1186   It returns a RedState.
1187
1188 The (n,stack) pair is just used for error reporting.
1189 n is always the depth of the stack.
1190 The stack is the stack of Insts being reduced: to produce X
1191 I had to produce Y, to produce Y I had to produce Z, and so on.
1192
1193 \begin{code}
1194 reduceList (n,stack) try_me wanteds state
1195   | n > opt_MaxContextReductionDepth
1196   = failWithTc (reduceDepthErr n stack)
1197
1198   | otherwise
1199   =
1200 #ifdef DEBUG
1201    (if n > 8 then
1202         pprTrace "Jeepers! ReduceContext:" (reduceDepthMsg n stack)
1203     else (\x->x))
1204 #endif
1205     go wanteds state
1206   where
1207     go []     state = returnTc state
1208     go (w:ws) state = reduce (n+1, w:stack) try_me w state      `thenTc` \ state' ->
1209                       go ws state'
1210
1211     -- Base case: we're done!
1212 reduce stack try_me wanted state
1213     -- It's the same as an existing inst, or a superclass thereof
1214   | isAvailable state wanted
1215   = returnTc state
1216
1217   | otherwise
1218   = case try_me wanted of {
1219
1220       DontReduce want_scs -> addIrred want_scs state wanted
1221
1222     ; DontReduceUnlessConstant ->    -- It's irreducible (or at least should not be reduced)
1223                                      -- First, see if the inst can be reduced to a constant in one step
1224         try_simple (addIrred AddSCs)    -- Assume want superclasses
1225
1226     ; Free ->   -- It's free so just chuck it upstairs
1227                 -- First, see if the inst can be reduced to a constant in one step
1228         try_simple addFree
1229
1230     ; ReduceMe ->               -- It should be reduced
1231         lookupInst wanted             `thenNF_Tc` \ lookup_result ->
1232         case lookup_result of
1233             GenInst wanteds' rhs -> reduceList stack try_me wanteds' state      `thenTc` \ state' ->
1234                                     addWanted state' wanted rhs wanteds'
1235             SimpleInst rhs       -> addWanted state wanted rhs []
1236
1237             NoInstance ->    -- No such instance!
1238                              -- Add it and its superclasses
1239                              addIrred AddSCs state wanted
1240
1241     }
1242   where
1243     try_simple do_this_otherwise
1244       = lookupInst wanted         `thenNF_Tc` \ lookup_result ->
1245         case lookup_result of
1246             SimpleInst rhs -> addWanted state wanted rhs []
1247             other          -> do_this_otherwise state wanted
1248 \end{code}
1249
1250
1251 \begin{code}
1252 isAvailable :: RedState -> Inst -> Bool
1253 isAvailable (avails, _) wanted = wanted `elemFM` avails
1254         -- NB: the Ord instance of Inst compares by the class/type info
1255         -- *not* by unique.  So
1256         --      d1::C Int ==  d2::C Int
1257
1258 -------------------------
1259 addFree :: RedState -> Inst -> NF_TcM RedState
1260         -- When an Inst is tossed upstairs as 'free' we nevertheless add it
1261         -- to avails, so that any other equal Insts will be commoned up right
1262         -- here rather than also being tossed upstairs.  This is really just
1263         -- an optimisation, and perhaps it is more trouble that it is worth,
1264         -- as the following comments show!
1265         --
1266         -- NB1: do *not* add superclasses.  If we have
1267         --      df::Floating a
1268         --      dn::Num a
1269         -- but a is not bound here, then we *don't* want to derive
1270         -- dn from df here lest we lose sharing.
1271         --
1272         -- NB2: do *not* add the Inst to avails at all if it's a method.
1273         -- The following situation shows why this is bad:
1274         --      truncate :: forall a. RealFrac a => forall b. Integral b => a -> b
1275         -- From an application (truncate f i) we get
1276         --      t1 = truncate at f
1277         --      t2 = t1 at i
1278         -- If we have also have a second occurrence of truncate, we get
1279         --      t3 = truncate at f
1280         --      t4 = t3 at i
1281         -- When simplifying with i,f free, we might still notice that
1282         --   t1=t3; but alas, the binding for t2 (which mentions t1)
1283         --   will continue to float out!
1284         -- Solution: never put methods in avail till they are captured
1285         -- in which case addFree isn't used
1286         --
1287         -- NB3: make sure that CCallable/CReturnable use NoRhs rather
1288         --      than BoundTo, else we end up with bogus bindings.
1289         --      c.f. instBindingRequired in addWanted
1290 addFree (avails, frees) free
1291   | isDict free = returnNF_Tc (addToFM avails free avail, free:frees)
1292   | otherwise   = returnNF_Tc (avails,                    free:frees)
1293   where
1294     avail | instBindingRequired free = BoundTo (instToId free)
1295           | otherwise                = NoRhs
1296
1297 addWanted :: RedState -> Inst -> TcExpr -> [Inst] -> NF_TcM RedState
1298 addWanted state@(avails, frees) wanted rhs_expr wanteds
1299 -- Do *not* add superclasses as well.  Here's an example of why not
1300 --      class Eq a => Foo a b
1301 --      instance Eq a => Foo [a] a
1302 -- If we are reducing
1303 --      (Foo [t] t)
1304 -- we'll first deduce that it holds (via the instance decl).  We
1305 -- must not then overwrite the Eq t constraint with a superclass selection!
1306 --      ToDo: this isn't entirely unsatisfactory, because
1307 --            we may also lose some entirely-legitimate sharing this way
1308
1309   = ASSERT( not (isAvailable state wanted) )
1310     returnNF_Tc (addToFM avails wanted avail, frees)
1311   where
1312     avail | instBindingRequired wanted = Rhs rhs_expr wanteds
1313           | otherwise                  = ASSERT( null wanteds ) NoRhs
1314
1315 addGiven :: RedState -> Inst -> NF_TcM RedState
1316 addGiven state given = addAvailAndSCs state given (BoundTo (instToId given))
1317
1318 addIrred :: WantSCs -> RedState -> Inst -> NF_TcM RedState
1319 addIrred NoSCs  (avails,frees) irred = returnNF_Tc (addToFM avails irred Irred, frees)
1320 addIrred AddSCs state          irred = addAvailAndSCs state irred Irred
1321
1322 addAvailAndSCs :: RedState -> Inst -> Avail -> NF_TcM RedState
1323 addAvailAndSCs (avails, frees) wanted avail
1324   = add_avail_and_scs avails wanted avail       `thenNF_Tc` \ avails' ->
1325     returnNF_Tc (avails', frees)
1326
1327 ---------------------
1328 add_avail_and_scs :: Avails -> Inst -> Avail -> NF_TcM Avails
1329 add_avail_and_scs avails wanted avail
1330   = add_scs (addToFM avails wanted avail) wanted
1331
1332 add_scs :: Avails -> Inst -> NF_TcM Avails
1333         -- Add all the superclasses of the Inst to Avails
1334         -- Invariant: the Inst is already in Avails.
1335
1336 add_scs avails dict
1337   | not (isClassDict dict)
1338   = returnNF_Tc avails
1339
1340   | otherwise   -- It is a dictionary
1341   = newDictsFromOld dict sc_theta'      `thenNF_Tc` \ sc_dicts ->
1342     foldlNF_Tc add_sc avails (zipEqual "add_scs" sc_dicts sc_sels)
1343   where
1344     (clas, tys) = getDictClassTys dict
1345     (tyvars, sc_theta, sc_sels, _) = classBigSig clas
1346     sc_theta' = substTheta (mkTopTyVarSubst tyvars tys) sc_theta
1347
1348     add_sc avails (sc_dict, sc_sel)     -- Add it, and its superclasses
1349       = case lookupFM avails sc_dict of
1350           Just (BoundTo _) -> returnNF_Tc avails        -- See Note [SUPER] below
1351           other            -> add_avail_and_scs avails sc_dict avail
1352       where
1353         sc_sel_rhs = DictApp (TyApp (HsVar sc_sel) tys) [instToId dict]
1354         avail      = Rhs sc_sel_rhs [dict]
1355 \end{code}
1356
1357 Note [SUPER].  We have to be careful here.  If we are *given* d1:Ord a,
1358 and want to deduce (d2:C [a]) where
1359
1360         class Ord a => C a where
1361         instance Ord a => C [a] where ...
1362
1363 Then we'll use the instance decl to deduce C [a] and then add the
1364 superclasses of C [a] to avails.  But we must not overwrite the binding
1365 for d1:Ord a (which is given) with a superclass selection or we'll just
1366 build a loop!  Hence looking for BoundTo.  Crudely, BoundTo is cheaper
1367 than a selection.
1368
1369
1370 %************************************************************************
1371 %*                                                                      *
1372 \section{tcSimplifyTop: defaulting}
1373 %*                                                                      *
1374 %************************************************************************
1375
1376
1377 If a dictionary constrains a type variable which is
1378         * not mentioned in the environment
1379         * and not mentioned in the type of the expression
1380 then it is ambiguous. No further information will arise to instantiate
1381 the type variable; nor will it be generalised and turned into an extra
1382 parameter to a function.
1383
1384 It is an error for this to occur, except that Haskell provided for
1385 certain rules to be applied in the special case of numeric types.
1386 Specifically, if
1387         * at least one of its classes is a numeric class, and
1388         * all of its classes are numeric or standard
1389 then the type variable can be defaulted to the first type in the
1390 default-type list which is an instance of all the offending classes.
1391
1392 So here is the function which does the work.  It takes the ambiguous
1393 dictionaries and either resolves them (producing bindings) or
1394 complains.  It works by splitting the dictionary list by type
1395 variable, and using @disambigOne@ to do the real business.
1396
1397 @tcSimplifyTop@ is called once per module to simplify all the constant
1398 and ambiguous Insts.
1399
1400 We need to be careful of one case.  Suppose we have
1401
1402         instance Num a => Num (Foo a b) where ...
1403
1404 and @tcSimplifyTop@ is given a constraint (Num (Foo x y)).  Then it'll simplify
1405 to (Num x), and default x to Int.  But what about y??
1406
1407 It's OK: the final zonking stage should zap y to (), which is fine.
1408
1409
1410 \begin{code}
1411 tcSimplifyTop :: LIE -> TcM TcDictBinds
1412 tcSimplifyTop wanted_lie
1413   = simpleReduceLoop (text "tcSimplTop") try_me wanteds `thenTc` \ (frees, binds, irreds) ->
1414     ASSERT( null frees )
1415
1416     let
1417                 -- All the non-std ones are definite errors
1418         (stds, non_stds) = partition isStdClassTyVarDict irreds
1419
1420                 -- Group by type variable
1421         std_groups = equivClasses cmp_by_tyvar stds
1422
1423                 -- Pick the ones which its worth trying to disambiguate
1424         (std_oks, std_bads) = partition worth_a_try std_groups
1425
1426                 -- Have a try at disambiguation
1427                 -- if the type variable isn't bound
1428                 -- up with one of the non-standard classes
1429         worth_a_try group@(d:_) = not (non_std_tyvars `intersectsVarSet` tyVarsOfInst d)
1430         non_std_tyvars          = unionVarSets (map tyVarsOfInst non_stds)
1431
1432                 -- Collect together all the bad guys
1433         bad_guys = non_stds ++ concat std_bads
1434     in
1435         -- Disambiguate the ones that look feasible
1436     mapTc disambigGroup std_oks         `thenTc` \ binds_ambig ->
1437
1438         -- And complain about the ones that don't
1439         -- This group includes both non-existent instances
1440         --      e.g. Num (IO a) and Eq (Int -> Int)
1441         -- and ambiguous dictionaries
1442         --      e.g. Num a
1443     addTopAmbigErrs bad_guys            `thenNF_Tc_`
1444
1445     returnTc (binds `andMonoBinds` andMonoBindList binds_ambig)
1446   where
1447     wanteds     = lieToList wanted_lie
1448     try_me inst = ReduceMe
1449
1450     d1 `cmp_by_tyvar` d2 = get_tv d1 `compare` get_tv d2
1451
1452 get_tv d   = case getDictClassTys d of
1453                    (clas, [ty]) -> tcGetTyVar "tcSimplify" ty
1454 get_clas d = case getDictClassTys d of
1455                    (clas, [ty]) -> clas
1456 \end{code}
1457
1458 @disambigOne@ assumes that its arguments dictionaries constrain all
1459 the same type variable.
1460
1461 ADR Comment 20/6/94: I've changed the @CReturnable@ case to default to
1462 @()@ instead of @Int@.  I reckon this is the Right Thing to do since
1463 the most common use of defaulting is code like:
1464 \begin{verbatim}
1465         _ccall_ foo     `seqPrimIO` bar
1466 \end{verbatim}
1467 Since we're not using the result of @foo@, the result if (presumably)
1468 @void@.
1469
1470 \begin{code}
1471 disambigGroup :: [Inst] -- All standard classes of form (C a)
1472               -> TcM TcDictBinds
1473
1474 disambigGroup dicts
1475   |   any isNumericClass classes        -- Guaranteed all standard classes
1476           -- see comment at the end of function for reasons as to
1477           -- why the defaulting mechanism doesn't apply to groups that
1478           -- include CCallable or CReturnable dicts.
1479    && not (any isCcallishClass classes)
1480   =     -- THE DICTS OBEY THE DEFAULTABLE CONSTRAINT
1481         -- SO, TRY DEFAULT TYPES IN ORDER
1482
1483         -- Failure here is caused by there being no type in the
1484         -- default list which can satisfy all the ambiguous classes.
1485         -- For example, if Real a is reqd, but the only type in the
1486         -- default list is Int.
1487     tcGetDefaultTys                     `thenNF_Tc` \ default_tys ->
1488     let
1489       try_default []    -- No defaults work, so fail
1490         = failTc
1491
1492       try_default (default_ty : default_tys)
1493         = tryTc_ (try_default default_tys) $    -- If default_ty fails, we try
1494                                                 -- default_tys instead
1495           tcSimplifyCheckThetas [] theta        `thenTc` \ _ ->
1496           returnTc default_ty
1497         where
1498           theta = [mkClassPred clas [default_ty] | clas <- classes]
1499     in
1500         -- See if any default works, and if so bind the type variable to it
1501         -- If not, add an AmbigErr
1502     recoverTc (addAmbigErrs dicts                       `thenNF_Tc_`
1503                returnTc EmptyMonoBinds) $
1504
1505     try_default default_tys                     `thenTc` \ chosen_default_ty ->
1506
1507         -- Bind the type variable and reduce the context, for real this time
1508     unifyTauTy chosen_default_ty (mkTyVarTy tyvar)      `thenTc_`
1509     simpleReduceLoop (text "disambig" <+> ppr dicts)
1510                      try_me dicts                       `thenTc` \ (frees, binds, ambigs) ->
1511     WARN( not (null frees && null ambigs), ppr frees $$ ppr ambigs )
1512     warnDefault dicts chosen_default_ty                 `thenTc_`
1513     returnTc binds
1514
1515   | all isCreturnableClass classes
1516   =     -- Default CCall stuff to (); we don't even both to check that () is an
1517         -- instance of CReturnable, because we know it is.
1518     unifyTauTy (mkTyVarTy tyvar) unitTy    `thenTc_`
1519     returnTc EmptyMonoBinds
1520
1521   | otherwise -- No defaults
1522   = addAmbigErrs dicts  `thenNF_Tc_`
1523     returnTc EmptyMonoBinds
1524
1525   where
1526     try_me inst = ReduceMe                      -- This reduce should not fail
1527     tyvar       = get_tv (head dicts)           -- Should be non-empty
1528     classes     = map get_clas dicts
1529 \end{code}
1530
1531 [Aside - why the defaulting mechanism is turned off when
1532  dealing with arguments and results to ccalls.
1533
1534 When typechecking _ccall_s, TcExpr ensures that the external
1535 function is only passed arguments (and in the other direction,
1536 results) of a restricted set of 'native' types. This is
1537 implemented via the help of the pseudo-type classes,
1538 @CReturnable@ (CR) and @CCallable@ (CC.)
1539
1540 The interaction between the defaulting mechanism for numeric
1541 values and CC & CR can be a bit puzzling to the user at times.
1542 For example,
1543
1544     x <- _ccall_ f
1545     if (x /= 0) then
1546        _ccall_ g x
1547      else
1548        return ()
1549
1550 What type has 'x' got here? That depends on the default list
1551 in operation, if it is equal to Haskell 98's default-default
1552 of (Integer, Double), 'x' has type Double, since Integer
1553 is not an instance of CR. If the default list is equal to
1554 Haskell 1.4's default-default of (Int, Double), 'x' has type
1555 Int.
1556
1557 To try to minimise the potential for surprises here, the
1558 defaulting mechanism is turned off in the presence of
1559 CCallable and CReturnable.
1560
1561 End of aside]
1562
1563
1564 %************************************************************************
1565 %*                                                                      *
1566 \subsection[simple]{@Simple@ versions}
1567 %*                                                                      *
1568 %************************************************************************
1569
1570 Much simpler versions when there are no bindings to make!
1571
1572 @tcSimplifyThetas@ simplifies class-type constraints formed by
1573 @deriving@ declarations and when specialising instances.  We are
1574 only interested in the simplified bunch of class/type constraints.
1575
1576 It simplifies to constraints of the form (C a b c) where
1577 a,b,c are type variables.  This is required for the context of
1578 instance declarations.
1579
1580 \begin{code}
1581 tcSimplifyThetas :: ThetaType           -- Wanted
1582                  -> TcM ThetaType               -- Needed
1583
1584 tcSimplifyThetas wanteds
1585   = doptsTc Opt_GlasgowExts             `thenNF_Tc` \ glaExts ->
1586     reduceSimple [] wanteds             `thenNF_Tc` \ irreds ->
1587     let
1588         -- For multi-param Haskell, check that the returned dictionaries
1589         -- don't have any of the form (C Int Bool) for which
1590         -- we expect an instance here
1591         -- For Haskell 98, check that all the constraints are of the form C a,
1592         -- where a is a type variable
1593         bad_guys | glaExts   = [pred | pred <- irreds,
1594                                        isEmptyVarSet (tyVarsOfPred pred)]
1595                  | otherwise = [pred | pred <- irreds,
1596                                        not (isTyVarClassPred pred)]
1597     in
1598     if null bad_guys then
1599         returnTc irreds
1600     else
1601        mapNF_Tc addNoInstErr bad_guys           `thenNF_Tc_`
1602        failTc
1603 \end{code}
1604
1605 @tcSimplifyCheckThetas@ just checks class-type constraints, essentially;
1606 used with \tr{default} declarations.  We are only interested in
1607 whether it worked or not.
1608
1609 \begin{code}
1610 tcSimplifyCheckThetas :: ThetaType      -- Given
1611                       -> ThetaType      -- Wanted
1612                       -> TcM ()
1613
1614 tcSimplifyCheckThetas givens wanteds
1615   = reduceSimple givens wanteds    `thenNF_Tc`  \ irreds ->
1616     if null irreds then
1617        returnTc ()
1618     else
1619        mapNF_Tc addNoInstErr irreds             `thenNF_Tc_`
1620        failTc
1621 \end{code}
1622
1623
1624 \begin{code}
1625 type AvailsSimple = FiniteMap PredType Bool
1626                     -- True  => irreducible
1627                     -- False => given, or can be derived from a given or from an irreducible
1628
1629 reduceSimple :: ThetaType                       -- Given
1630              -> ThetaType                       -- Wanted
1631              -> NF_TcM ThetaType                -- Irreducible
1632
1633 reduceSimple givens wanteds
1634   = reduce_simple (0,[]) givens_fm wanteds      `thenNF_Tc` \ givens_fm' ->
1635     returnNF_Tc [pred | (pred,True) <- fmToList givens_fm']
1636   where
1637     givens_fm     = foldl addNonIrred emptyFM givens
1638
1639 reduce_simple :: (Int,ThetaType)                -- Stack
1640               -> AvailsSimple
1641               -> ThetaType
1642               -> NF_TcM AvailsSimple
1643
1644 reduce_simple (n,stack) avails wanteds
1645   = go avails wanteds
1646   where
1647     go avails []     = returnNF_Tc avails
1648     go avails (w:ws) = reduce_simple_help (n+1,w:stack) avails w        `thenNF_Tc` \ avails' ->
1649                        go avails' ws
1650
1651 reduce_simple_help stack givens wanted
1652   | wanted `elemFM` givens
1653   = returnNF_Tc givens
1654
1655   | Just (clas, tys) <- getClassPredTys_maybe wanted
1656   = lookupSimpleInst clas tys   `thenNF_Tc` \ maybe_theta ->
1657     case maybe_theta of
1658       Nothing ->    returnNF_Tc (addSimpleIrred givens wanted)
1659       Just theta -> reduce_simple stack (addNonIrred givens wanted) theta
1660
1661   | otherwise
1662   = returnNF_Tc (addSimpleIrred givens wanted)
1663
1664 addSimpleIrred :: AvailsSimple -> PredType -> AvailsSimple
1665 addSimpleIrred givens pred
1666   = addSCs (addToFM givens pred True) pred
1667
1668 addNonIrred :: AvailsSimple -> PredType -> AvailsSimple
1669 addNonIrred givens pred
1670   = addSCs (addToFM givens pred False) pred
1671
1672 addSCs givens pred
1673   | not (isClassPred pred) = givens
1674   | otherwise              = foldl add givens sc_theta
1675  where
1676    Just (clas,tys) = getClassPredTys_maybe pred
1677    (tyvars, sc_theta_tmpl, _, _) = classBigSig clas
1678    sc_theta = substTheta (mkTopTyVarSubst tyvars tys) sc_theta_tmpl
1679
1680    add givens ct
1681      = case lookupFM givens ct of
1682        Nothing    -> -- Add it and its superclasses
1683                      addSCs (addToFM givens ct False) ct
1684
1685        Just True  -> -- Set its flag to False; superclasses already done
1686                      addToFM givens ct False
1687
1688        Just False -> -- Already done
1689                      givens
1690
1691 \end{code}
1692
1693
1694 %************************************************************************
1695 %*                                                                      *
1696 \section{Errors and contexts}
1697 %*                                                                      *
1698 %************************************************************************
1699
1700 ToDo: for these error messages, should we note the location as coming
1701 from the insts, or just whatever seems to be around in the monad just
1702 now?
1703
1704 \begin{code}
1705 groupInsts :: [Inst] -> [[Inst]]
1706 -- Group together insts with the same origin
1707 -- We want to report them together in error messages
1708 groupInsts []           = []
1709 groupInsts (inst:insts) = (inst:friends) : groupInsts others
1710                         where
1711                                 -- (It may seem a bit crude to compare the error messages,
1712                                 --  but it makes sure that we combine just what the user sees,
1713                                 --  and it avoids need equality on InstLocs.)
1714                           (friends, others) = partition is_friend insts
1715                           loc_msg           = showSDoc (pprInstLoc (instLoc inst))
1716                           is_friend friend  = showSDoc (pprInstLoc (instLoc friend)) == loc_msg
1717
1718
1719 addTopAmbigErrs dicts
1720   = mapNF_Tc (addTopInstanceErrs tidy_env) (groupInsts no_insts)        `thenNF_Tc_`
1721     mapNF_Tc (addTopIPErrs tidy_env)       (groupInsts bad_ips)         `thenNF_Tc_`
1722     mapNF_Tc (addAmbigErr tidy_env)        ambigs                       `thenNF_Tc_`
1723     returnNF_Tc ()
1724   where
1725     fixed_tvs = oclose (predsOfInsts tidy_dicts) emptyVarSet
1726     (tidy_env, tidy_dicts) = tidyInsts dicts
1727     (bad_ips, non_ips)     = partition is_ip tidy_dicts
1728     (no_insts, ambigs)     = partition no_inst non_ips
1729     is_ip d   = any isIPPred (predsOfInst d)
1730     no_inst d = not (isTyVarDict d) || tyVarsOfInst d `subVarSet` fixed_tvs
1731
1732 plural [x] = empty
1733 plural xs  = char 's'
1734
1735 addTopIPErrs tidy_env tidy_dicts
1736   = addInstErrTcM (instLoc (head tidy_dicts))
1737         (tidy_env,
1738          ptext SLIT("Unbound implicit parameter") <> plural tidy_dicts <+> pprInsts tidy_dicts)
1739
1740 -- Used for top-level irreducibles
1741 addTopInstanceErrs tidy_env tidy_dicts
1742   = addInstErrTcM (instLoc (head tidy_dicts))
1743         (tidy_env,
1744          ptext SLIT("No instance") <> plural tidy_dicts <+> 
1745                 ptext SLIT("for") <+> pprInsts tidy_dicts)
1746
1747 addAmbigErrs dicts
1748   = mapNF_Tc (addAmbigErr tidy_env) tidy_dicts
1749   where
1750     (tidy_env, tidy_dicts) = tidyInsts dicts
1751
1752 addAmbigErr tidy_env tidy_dict
1753   = addInstErrTcM (instLoc tidy_dict)
1754         (tidy_env,
1755          sep [text "Ambiguous type variable(s)" <+> pprQuotedList ambig_tvs,
1756               nest 4 (text "in the constraint" <+> quotes (pprInst tidy_dict))])
1757   where
1758     ambig_tvs = varSetElems (tyVarsOfInst tidy_dict)
1759
1760 warnDefault dicts default_ty
1761   = doptsTc Opt_WarnTypeDefaults  `thenTc` \ warn_flag ->
1762     tcAddSrcLoc (get_loc (head dicts)) (warnTc warn_flag warn_msg)
1763   where
1764         -- Tidy them first
1765     (_, tidy_dicts) = tidyInsts dicts
1766     get_loc i = case instLoc i of { (_,loc,_) -> loc }
1767     warn_msg  = vcat [ptext SLIT("Defaulting the following constraint(s) to type") <+>
1768                                 quotes (ppr default_ty),
1769                       pprInstsInFull tidy_dicts]
1770
1771 complainCheck doc givens irreds
1772   = mapNF_Tc zonkInst given_dicts                                 `thenNF_Tc` \ givens' ->
1773     mapNF_Tc (addNoInstanceErrs doc givens') (groupInsts irreds)  `thenNF_Tc_`
1774     returnNF_Tc ()
1775   where
1776     given_dicts = filter isDict givens
1777         -- Filter out methods, which are only added to
1778         -- the given set as an optimisation
1779
1780 addNoInstanceErrs what_doc givens dicts
1781   = tcGetInstEnv        `thenNF_Tc` \ inst_env ->
1782     let
1783         (tidy_env1, tidy_givens) = tidyInsts givens
1784         (tidy_env2, tidy_dicts)  = tidyMoreInsts tidy_env1 dicts
1785
1786         doc = vcat [sep [herald <+> pprInsts tidy_dicts,
1787                          nest 4 $ ptext SLIT("from the context") <+> pprInsts tidy_givens],
1788                     ambig_doc,
1789                     ptext SLIT("Probable fix:"),
1790                     nest 4 fix1,
1791                     nest 4 fix2]
1792
1793         herald = ptext SLIT("Could not") <+> unambig_doc <+> ptext SLIT("deduce")
1794         unambig_doc | ambig_overlap = ptext SLIT("unambiguously")
1795                     | otherwise     = empty
1796
1797                 -- The error message when we don't find a suitable instance
1798                 -- is complicated by the fact that sometimes this is because
1799                 -- there is no instance, and sometimes it's because there are
1800                 -- too many instances (overlap).  See the comments in TcEnv.lhs
1801                 -- with the InstEnv stuff.
1802
1803         ambig_doc
1804             | not ambig_overlap = empty
1805             | otherwise
1806             = vcat [ptext SLIT("The choice of (overlapping) instance declaration"),
1807                     nest 4 (ptext SLIT("depends on the instantiation of") <+>
1808                             quotes (pprWithCommas ppr (varSetElems (tyVarsOfInsts tidy_dicts))))]
1809
1810         fix1 = sep [ptext SLIT("Add") <+> pprInsts tidy_dicts,
1811                     ptext SLIT("to the") <+> what_doc]
1812
1813         fix2 | null instance_dicts 
1814              = empty
1815              | otherwise
1816              = ptext SLIT("Or add an instance declaration for") <+> pprInsts instance_dicts
1817
1818         instance_dicts = [d | d <- tidy_dicts, isClassDict d, not (isTyVarDict d)]
1819                 -- Insts for which it is worth suggesting an adding an instance declaration
1820                 -- Exclude implicit parameters, and tyvar dicts
1821
1822             -- Checks for the ambiguous case when we have overlapping instances
1823         ambig_overlap = any ambig_overlap1 dicts
1824         ambig_overlap1 dict 
1825                 | isClassDict dict
1826                 = case lookupInstEnv inst_env clas tys of
1827                             NoMatch ambig -> ambig
1828                             other         -> False
1829                 | otherwise = False
1830                 where
1831                   (clas,tys) = getDictClassTys dict
1832     in
1833     addInstErrTcM (instLoc (head dicts)) (tidy_env2, doc)
1834
1835 -- Used for the ...Thetas variants; all top level
1836 addNoInstErr pred
1837   = addErrTc (ptext SLIT("No instance for") <+> quotes (ppr pred))
1838
1839 reduceDepthErr n stack
1840   = vcat [ptext SLIT("Context reduction stack overflow; size =") <+> int n,
1841           ptext SLIT("Use -fcontext-stack20 to increase stack size to (e.g.) 20"),
1842           nest 4 (pprInstsInFull stack)]
1843
1844 reduceDepthMsg n stack = nest 4 (pprInstsInFull stack)
1845
1846 -----------------------------------------------
1847 addCantGenErr inst
1848   = addErrTc (sep [ptext SLIT("Cannot generalise these overloadings (in a _ccall_):"),
1849                    nest 4 (ppr inst <+> pprInstLoc (instLoc inst))])
1850 \end{code}