Back to front test in canDecomposableTyConAppOK
Look at this code in canDecomposableTyConAppOK
:
new_locs = [ new_loc
| bndr <- tyConBinders tc
, let new_loc0 | isNamedTyConBinder bndr = toKindLoc loc
| otherwise = loc
new_loc | isVisibleTyConBinder bndr
= updateCtLocOrigin new_loc0 toInvisibleOrigin
| otherwise
= new_loc0 ]
The isVisibleTyConBinder
case is back to front. We are making the origin invisible when the argument is visible.
@rae do you agree?