import TysWiredIn
import VarSet
import TysPrim
-import Type
import SrcLoc
import Outputable
unscramble :: TcType -> (TcType, [TcType])
-- unscramble ((w,s1) .. sn) = (w, [s1..sn])
- unscramble ty
+ unscramble ty = unscramble' ty []
+
+ unscramble' ty ss
= case tcSplitTyConApp_maybe ty of
Just (tc, [t,s]) | tc == pairTyCon
- -> let
- (w,ss) = unscramble t
- in (w, s:ss)
-
- _ -> (ty, [])
+ -> unscramble' t (s:ss)
+ _ -> (ty, ss)
-----------------------------------------------------------------
-- Base case for illegal commands