diff options
author | Manuel M T Chakravarty <chak@cse.unsw.edu.au> | 2009-08-20 07:26:08 +0000 |
---|---|---|
committer | Manuel M T Chakravarty <chak@cse.unsw.edu.au> | 2009-08-20 07:26:08 +0000 |
commit | 46b7ded55b37bcfccb1563625af1e45454524120 (patch) | |
tree | dcbd167696ed2c04e3b10c6341aa39ef2e7529c5 /compiler/deSugar/DsBinds.lhs | |
parent | c768955afb2e5580eb779104e3900d981013dbcc (diff) | |
download | haskell-46b7ded55b37bcfccb1563625af1e45454524120.tar.gz |
FIX #2767 & original problem of #3208
Diffstat (limited to 'compiler/deSugar/DsBinds.lhs')
-rw-r--r-- | compiler/deSugar/DsBinds.lhs | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/compiler/deSugar/DsBinds.lhs b/compiler/deSugar/DsBinds.lhs index 0c8e37a0bb..7f752f88c2 100644 --- a/compiler/deSugar/DsBinds.lhs +++ b/compiler/deSugar/DsBinds.lhs @@ -262,22 +262,22 @@ dsHsBind auto_scc rest (AbsBinds all_tyvars dicts exports binds) ; poly_tup_id <- newSysLocalDs (exprType poly_tup_expr) - ; let dict_args = map Var dicts - - mk_bind ((tyvars, global, local, prags), n) -- locals !! n == local - = -- Need to make fresh locals to bind in the selector, because - -- some of the tyvars will be bound to 'Any' + ; let mk_bind ((tyvars, global, local, prags), n) -- locals!!n == local + = -- Need to make fresh locals to bind in the selector, + -- because some of the tyvars will be bound to 'Any' do { ty_args <- mapM mk_ty_arg all_tyvars ; let substitute = substTyWith all_tyvars ty_args ; locals' <- newSysLocalsDs (map substitute local_tys) ; tup_id <- newSysLocalDs (substitute tup_ty) - ; mb_specs <- mapM (dsSpec all_tyvars dicts tyvars global local core_bind) + ; mb_specs <- mapM (dsSpec all_tyvars dicts tyvars global + local core_bind) prags ; let (spec_binds, rules) = unzip (catMaybes mb_specs) global' = addIdSpecialisations global rules rhs = mkLams tyvars $ mkLams dicts $ mkTupleSelector locals' (locals' !! n) tup_id $ - mkApps (mkTyApps (Var poly_tup_id) ty_args) dict_args + mkVarApps (mkTyApps (Var poly_tup_id) ty_args) + dicts ; return ((global', rhs) : spec_binds) } where mk_ty_arg all_tyvar |