summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
038af69)
Fix for a bug which affects record updates when the record has strict
unboxed fields (i.e. -funbox-strict-fields is on).
MERGE with 5.00 (after testing, and if it can be done before the release)
import CostCentre ( mkUserCC )
import Id ( Id, idType, recordSelectorFieldLabel )
import PrelInfo ( rEC_CON_ERROR_ID, iRREFUT_PAT_ERROR_ID )
import CostCentre ( mkUserCC )
import Id ( Id, idType, recordSelectorFieldLabel )
import PrelInfo ( rEC_CON_ERROR_ID, iRREFUT_PAT_ERROR_ID )
-import DataCon ( DataCon, dataConWrapId, dataConArgTys, dataConFieldLabels )
+import DataCon ( DataCon, dataConWrapId, dataConFieldLabels, dataConInstOrigArgTys )
import DataCon ( isExistentialDataCon )
import Literal ( Literal(..) )
import TyCon ( tyConDataCons )
import DataCon ( isExistentialDataCon )
import Literal ( Literal(..) )
import TyCon ( tyConDataCons )
[] -> HsVar old_arg_id
mk_alt con
[] -> HsVar old_arg_id
mk_alt con
- = newSysLocalsDs (dataConArgTys con in_inst_tys) `thenDs` \ arg_ids ->
+ = newSysLocalsDs (dataConInstOrigArgTys con in_inst_tys) `thenDs` \ arg_ids ->
-- This call to dataConArgTys won't work for existentials
let
val_args = zipWithEqual "dsExpr:RecordUpd" mk_val_arg
-- This call to dataConArgTys won't work for existentials
let
val_args = zipWithEqual "dsExpr:RecordUpd" mk_val_arg