From 97d5e75a63afc329096d94c74760415c586f7cec Mon Sep 17 00:00:00 2001 From: "simonpj@microsoft.com" Date: Fri, 30 Jan 2009 17:54:03 +0000 Subject: [PATCH] Comments about injecting implicit bindings --- compiler/main/TidyPgm.lhs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/compiler/main/TidyPgm.lhs b/compiler/main/TidyPgm.lhs index 869cc8f..60fd726 100644 --- a/compiler/main/TidyPgm.lhs +++ b/compiler/main/TidyPgm.lhs @@ -478,6 +478,19 @@ got the wrong arity -- ie the simplifier gave it arity 2, whereas importing modules were expecting it to have arity 1 (Trac #2844). It's much safer just to inject them right at the end, after tidying. +Oh: two other reasons for injecting them late: + - If implicit Ids are already in the bindings when we start TidyPgm, + we'd have to be careful not to treat them as external Ids (in + the sense of findExternalIds); else the Ids mentioned in *their* + RHSs will be treated as external and you get an interface file + saying a18 = + but nothing refererring to a18 (because the implicit Id is the + one that does). + + - More seriously, the tidied type-envt will include the implicit + Id replete with a18 in its unfolding; but we won't take account + of a18 when computing a fingerprint for the class; result chaos. + \begin{code} getImplicitBinds :: TypeEnv -> [CoreBind] -- 1.7.10.4