Simplify CoreFV.FVAnn
When introducing type-in-type, Richard elaborated the free variable finder so that it finds three things at once (in CoreFV
):
data FVAnn = FVAnn { fva_fvs :: DVarSet -- free in expression
, fva_ty_fvs :: DVarSet -- free only in expression's type
, fva_ty :: Type -- expression's type
}
I think fva_ty
is needed only to support fva_ty_fvs
. And fva_ty_fvs
seems to be used only to support the calls to freeVarsOfType
in FloatIn
. And those calls in turn are only to suppor used_in_ty
in FloatIn.sepBindsByDropPoint
.
In conversation yesterday, Richard and I agreed that all this is unnecessary. Coercion bindings simply do not float inwards, so we do not need to take these precautions. (We should add a Note to explain why they don't float, and what problem might arise if they did.)
To confirm this I set used_in_ty
to False
and compiled from scratch; everything is fine.
So I propose that we
- get rid of the
ty_fvs
argument tosepBindsByDropPoint
- simplfy
FVAnn
to just gather free variables (ie one field only)
Result: it's all simpler.
Richard will do this when he gets a moment. But I really hope for 8.2