From: simonpj Date: Wed, 5 Feb 2003 11:41:50 +0000 (+0000) Subject: [project @ 2003-02-05 11:41:50 by simonpj] X-Git-Tag: Approx_11550_changesets_converted~1204 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=0e09b9b77cba2376168c5c8f061c1e9f4e6e53ac;p=ghc-hetmet.git [project @ 2003-02-05 11:41:50 by simonpj] Wibble to TcRules (fixes HEAD breakage) --- diff --git a/ghc/compiler/typecheck/TcRules.lhs b/ghc/compiler/typecheck/TcRules.lhs index 3cc7770..492e9ab 100644 --- a/ghc/compiler/typecheck/TcRules.lhs +++ b/ghc/compiler/typecheck/TcRules.lhs @@ -19,7 +19,7 @@ import TcType ( tyVarsOfTypes, openTypeKind ) import TcIfaceSig ( tcCoreExpr, tcCoreLamBndrs ) import TcMonoType ( tcHsSigType, UserTypeCtxt(..), tcAddScopedTyVars ) import TcExpr ( tcMonoExpr ) -import TcEnv ( tcExtendLocalValEnv, tcLookupGlobalId ) +import TcEnv ( tcExtendLocalValEnv, tcLookupGlobalId, tcLookupId ) import Inst ( instToId ) import Id ( idType, mkLocalId ) import Outputable @@ -39,8 +39,15 @@ tcRule (IfaceRule name act vars fun args rhs src_loc) tcCoreExpr rhs `thenM` \ rhs' -> returnM (IfaceRuleOut fun' (Rule name act vars' args' rhs')) -tcRule (IfaceRuleOut fun rule) -- Built-in rules come this way - = tcLookupGlobalId fun `thenM` \ fun' -> +tcRule (IfaceRuleOut fun rule) -- Built-in rules, and only built-in rules, + -- come this way. Usually IfaceRuleOut is only + -- used for the *output* of the type checker + = tcLookupId fun `thenM` \ fun' -> + -- NB: tcLookupId, not tcLookupGlobalId + -- Reason: when compiling GHC.Base, where eqString is defined, + -- we'll get the builtin rule for eqString, but eqString + -- will be in the *local* type environment. + -- Seems like a bit of a hack returnM (IfaceRuleOut fun' rule) tcRule (HsRule name act vars lhs rhs src_loc)