X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Ftypecheck%2FTcRnTypes.lhs;h=feaf9f949200cfc9799bb5cfb764e5354bf70632;hp=2ea26a82457f387aa4efa71611a625c8fbdfec4c;hb=aafdba3bce91afb003f5f50e001e141744837bae;hpb=6d2b0ae3ae3296cb6cdd496cbf85b897c7ce150b diff --git a/compiler/typecheck/TcRnTypes.lhs b/compiler/typecheck/TcRnTypes.lhs index 2ea26a8..feaf9f9 100644 --- a/compiler/typecheck/TcRnTypes.lhs +++ b/compiler/typecheck/TcRnTypes.lhs @@ -1,4 +1,4 @@ -% + % (c) The University of Glasgow 2006 % (c) The GRASP Project, Glasgow University, 1992-2002 % @@ -152,7 +152,7 @@ data TcGblEnv -- (Ids defined in this module start in the local envt, -- though they move to the global envt during zonking) - tcg_type_env_var :: TcRef TypeEnv, + tcg_type_env_var :: TcRef TypeEnv, -- Used only to initialise the interface-file -- typechecker in initIfaceTcRn, so that it can see stuff -- bound in this module when dealing with hi-boot recursions @@ -369,7 +369,7 @@ type ThLevel = Int -- Incremented when going inside a bracket, -- decremented when going inside a splice -- NB: ThLevel is one greater than the 'n' in Fig 2 of the - -- original "Template meta-programmign for Haskell" paper + -- original "Template meta-programming for Haskell" paper impLevel, topLevel :: ThLevel topLevel = 1 -- Things defined at top level of this module @@ -661,9 +661,9 @@ data Inst -- Includes coercion variables -- mentioned in tci_reft tci_reft :: Refinement, - tci_given :: [Inst], -- Only Dicts + tci_given :: [Inst], -- Only Dicts and EqInsts -- (no Methods, LitInsts, ImplicInsts) - tci_wanted :: [Inst], -- Only Dicts and ImplicInsts + tci_wanted :: [Inst], -- Only Dicts, EqInst, and ImplicInsts -- (no Methods or LitInsts) tci_loc :: InstLoc @@ -864,18 +864,23 @@ data InstOrigin -- The rest are all occurrences: Insts that are 'wanted' ------------------------------------------------------- | OccurrenceOf Name -- Occurrence of an overloaded identifier + | SpecPragOrigin Name -- Specialisation pragma for identifier | IPOccOrigin (IPName Name) -- Occurrence of an implicit parameter | LiteralOrigin (HsOverLit Name) -- Occurrence of a literal + | NegateOrigin -- Occurrence of syntactic negation | ArithSeqOrigin (ArithSeqInfo Name) -- [x..], [x..y] etc | PArrSeqOrigin (ArithSeqInfo Name) -- [:x..y:] and [:x,y..z:] + | TupleOrigin -- (..,..) | InstSigOrigin -- A dict occurrence arising from instantiating -- a polymorphic type during a subsumption check + | ExprSigOrigin -- e :: ty | RecordUpdOrigin + | ViewPatOrigin | InstScOrigin -- Typechecking superclasses of an instance declaration | DerivOrigin -- Typechecking deriving | StandAloneDerivOrigin -- Typechecking stand-alone deriving @@ -887,13 +892,17 @@ data InstOrigin instance Outputable InstOrigin where ppr (OccurrenceOf name) = hsep [ptext SLIT("a use of"), quotes (ppr name)] + ppr (SpecPragOrigin name) = hsep [ptext SLIT("a specialisation pragma for"), quotes (ppr name)] ppr (IPOccOrigin name) = hsep [ptext SLIT("a use of implicit parameter"), quotes (ppr name)] ppr (IPBindOrigin name) = hsep [ptext SLIT("a binding for implicit parameter"), quotes (ppr name)] ppr RecordUpdOrigin = ptext SLIT("a record update") + ppr ExprSigOrigin = ptext SLIT("an expression type signature") + ppr ViewPatOrigin = ptext SLIT("a view pattern") ppr (LiteralOrigin lit) = hsep [ptext SLIT("the literal"), quotes (ppr lit)] ppr (ArithSeqOrigin seq) = hsep [ptext SLIT("the arithmetic sequence"), quotes (ppr seq)] ppr (PArrSeqOrigin seq) = hsep [ptext SLIT("the parallel array sequence"), quotes (ppr seq)] - ppr InstSigOrigin = ptext SLIT("instantiating a type signature") + ppr TupleOrigin = ptext SLIT("a tuple") + ppr NegateOrigin = ptext SLIT("a use of syntactic negation") ppr InstScOrigin = ptext SLIT("the superclasses of an instance declaration") ppr DerivOrigin = ptext SLIT("the 'deriving' clause of a data type declaration") ppr StandAloneDerivOrigin = ptext SLIT("a 'deriving' declaration") @@ -903,5 +912,4 @@ instance Outputable InstOrigin where ppr (ImplicOrigin doc) = doc ppr (SigOrigin info) = pprSkolInfo info ppr EqOrigin = ptext SLIT("a type equality") - \end{code}